【发布时间】:2016-10-08 11:17:54
【问题描述】:
我对这个话题很陌生。每当我尝试一个接一个地完成一个进程时,都会感到困惑,下一个进程会在执行第一个进程之前启动。
例如:我正在从共享内存中读取,我希望下一个 write 进程等到 read 结束。但是在读取了某些部分之后,写入过程会进入并更改值。
我尝试使用 mutex 和 cond_wait 进行编码。也许有一些错误,或者我真的不知道 cond_wait 是如何正常工作的。需要帮助
我的代码 sn-p:
void create_reader()
{
pthread_mutex_lock(&mutex);
if (0 == fork()) {
reader();
exit(0);
}
readerID++;
r+=1;
pthread_cond_signal(&condition);
pthread_mutex_unlock(&mutex);
}
void create_writer()
{
pthread_mutex_lock(&mutex);
while (!r)
{
cout<<"waiting"<<endl;
pthread_cond_wait(&condition,&mutex);
}
if (0 == fork()) {
writer();
exit(0);
}
pthread_mutex_unlock(&mutex);
writerID++;
}
【问题讨论】:
标签: c++ multithreading pthreads shared-memory