Exemplo n.º 1
0
void *main_thread(void *arg)
{
	__CS_pthread_t t1;
	__CS_pthread_t t2;
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_mutex_init(&ma[__CS_round], 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_mutex_init(&mb[__CS_round], 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	data1[__CS_round] = 10;
	__CS_cs(); if (__CS_ret != 0) return 0;
	data2[__CS_round] = 10;
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_create(&t1, 0, thread1, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_create(&t2, 0, thread2, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_join(t1, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_join(t2, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	if ((data1[__CS_round] == 16) && (data2[__CS_round] == 5))
	{
		__CS_cs(); if (__CS_ret != 0) return 0;
		__CS_ERROR: __CS_error = 1; __CS_ret = __CS_ret_ERROR; return 0;
		__CS_cs(); if (__CS_ret != 0) return 0;
		goto __CS_ERROR;

		__CS_cs(); if (__CS_ret != 0) return 0;
		;
		__CS_cs(); if (__CS_ret != 0) return 0;
	}
	__CS_cs(); if (__CS_ret != 0) return 0;
	}
void *main_thread(void *arg)
{
    __CS_pthread_t t1;
    __CS_pthread_t t2;
    __CS_cs();
    if (__CS_ret != 0) return 0;
    __CS_assume(inode[__CS_round] == busy[__CS_round]);
    __CS_cs();
    if (__CS_ret != 0) return 0;
    __CS_pthread_mutex_init(&m_inode[__CS_round], 0);
    __CS_cs();
    if (__CS_ret != 0) return 0;
    __CS_pthread_mutex_init(&m_busy[__CS_round], 0);
    __CS_cs();
    if (__CS_ret != 0) return 0;
    __CS_pthread_create(&t1, 0, allocator, 0);
    __CS_cs();
    if (__CS_ret != 0) return 0;
    __CS_pthread_create(&t2, 0, de_allocator, 0);
    __CS_cs();
    if (__CS_ret != 0) return 0;
    __CS_pthread_join(t1, 0);
    __CS_cs();
    if (__CS_ret != 0) return 0;
    __CS_pthread_join(t2, 0);
    __CS_cs();
    if (__CS_ret != 0) return 0;
    __CS_pthread_mutex_destroy(&m_inode[__CS_round]);
    __CS_cs();
    if (__CS_ret != 0) return 0;
    __CS_pthread_mutex_destroy(&m_busy[__CS_round]);
    __CS_cs();
    if (__CS_ret != 0) return 0;
}
void *main_thread(void *arg)
{
	__CS_pthread_t t1;
	__CS_pthread_t t2;
	__CS_cs(); if (__CS_ret != 0) return 0;
	num[__CS_round] = 1;
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_mutex_init(&m[__CS_round], 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_cond_init(&empty[__CS_round], 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_cond_init(&full[__CS_round], 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_create(&t1, 0, thread1, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_create(&t2, 0, thread2, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_join(t1, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_join(t2, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	if (num[__CS_round] != 1)
	{
		__CS_cs(); if (__CS_ret != 0) return 0;
		__CS_ERROR: __CS_error = 1; __CS_ret = __CS_ret_ERROR; return 0;
		__CS_cs(); if (__CS_ret != 0) return 0;
		goto __CS_ERROR;

		__CS_cs(); if (__CS_ret != 0) return 0;
		;
		__CS_cs(); if (__CS_ret != 0) return 0;
	}
	__CS_cs(); if (__CS_ret != 0) return 0;
	}
void *main_thread(void *arg)
{
	__CS_pthread_t id1;
	__CS_pthread_t id2;
	__CS_cs(); if (__CS_ret != 0) return 0;
	enqueue_flag[__CS_round] = 1;
	__CS_cs(); if (__CS_ret != 0) return 0;
	dequeue_flag[__CS_round] = 0;
	__CS_cs(); if (__CS_ret != 0) return 0;
	init(&queue[__CS_round]);
	__CS_cs(); if (__CS_ret != 0) return 0;
	if ((!empty(&queue[__CS_round])) == (-1))
	{
		__CS_cs(); if (__CS_ret != 0) return 0;
		goto __CS_ERROR;
		__CS_cs(); if (__CS_ret != 0) return 0;
		__CS_ERROR: __CS_error = 1; __CS_ret = __CS_ret_ERROR; __CS_error_detail = __ERR_ERROR_LABEL_REACHED; return 0;
		__CS_cs(); if (__CS_ret != 0) return 0;
		;

		__CS_cs(); if (__CS_ret != 0) return 0;
	}
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_mutex_init(&m[__CS_round], 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_create(&id1, 0, t1, &queue[__CS_round]);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_create(&id2, 0, t2, &queue[__CS_round]);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_join(id1, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_join(id2, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	}
void *main_thread(void *arg)
{
	__CS_pthread_t id1;
	__CS_pthread_t id2;
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_mutex_init(&m[__CS_round], 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_create(&id1, 0, t1, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_create(&id2, 0, t2, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_join(id1, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	__CS_pthread_join(id2, 0);
	__CS_cs(); if (__CS_ret != 0) return 0;
	}