使用互斥量2进程之间的屏障同步
|
我需要使用互斥锁(仅)在2个线程之间实现屏障同步。屏障同步是2个线程将在预定义的步骤互相等待,然后再继续。
我可以使用seamaphore来做到这一点,但是我如何仅使用互斥锁来做到这一点。提示我需要2个互斥锁而不是1个。
使用Seamaphore:
#include <pthread.h>
#include <semaphore.h>
using namespace std;
sem_t s1;
sem_t s2;
void* fun1(void* i)
{
cout << \"fun1 stage 1\" << endl;
cout << \"fun1 stage 2\" << endl;
cout << \"fun1 stage 3\" << endl;
sem_post (&s1);
sem_wait (&s2);
cout << \"fun1 stage 4\" << endl;
}
void* fun2(void* i)
{
cout << \"fun2 stage 1\" << endl;
cout << \"fun2 stage 2\" << endl;
// sleep(5);
sem_post (&s2);
sem_wait (&s1);
cout << \"fun2 stage 3\" << endl;
}
main()
{
sem_init(&s1, 0, 0);
sem_init(&s2, 0, 0);
int value;
sem_getvalue(&s2, &value);
cout << \"s2 = \" << value << endl;
pthread_t iThreadId;
cout << pthread_create(&iThreadId, NULL, &fun2, NULL) << endl;
// cout << pthread_create(&iThreadId, NULL, &fun2, NULL) << endl;
pthread_create(&iThreadId, NULL, &fun1, NULL);
sleep(10);
}
将以上代码编译为\“ g ++ barrier.cc -lpthread \”
没有找到相关结果
已邀请:
2 个回复
门锑腺潮
厘恼轨