【发布时间】:2017-10-07 19:57:28
【问题描述】:
假设有NUM_TREADS 线程并且它们必须在执行job2() 之前完成job1()。如何保证这种情况发生,像这样:
void thread_func(void *arg)
{
while(1) {
job1();
some_kind_of_waiting();
job2();
}
return NULL;
}
信号量会像下面这样工作还是有其他/更好的解决方案?
{
static int done;
static sem_t semaphore;
if(__sync_fetch_and_add(&done, 1) == THREAD_NUMS-1) {
done = 0;
for(i = 0; i < THREAD_NUMS-1; i++)
sem_post(&semaphore);
} else
sem_wait(&semaphore);
}
谢谢。
【问题讨论】:
-
这是一个 c 还是 c++ 的问题?答案取决于您使用的语言。
-
您正在从
void函数返回NULL。 -
你可以使用 C++ std::future 吗?
标签: c++ c multithreading pthreads