【发布时间】:2019-05-28 13:48:13
【问题描述】:
我正在尝试使用二进制信号量解决读取器/写入器问题。
我期望的结果是我是 writer2,data 是 1。我是 reader3,data 是 2。
但是,结果是我是 writer0,我是 reader0 data1,data2 ~ data5。 如何修复我的代码?
int data = 0; // global variable.
void main()
{
//other code is omitted.
int i;
for(i=0; i<5; i++)
pthread_create(&w[i], NULL, writer, &i);
for(i=0; i<20; i++)
pthread_create(&r[i], NULL, reader, &i);
for(i=0; i<5; i++)
pthread_join(w[i], NULL);
for(i=0; i<20; i++)
pthread_join(r[i], NULL);
}
【问题讨论】:
-
你的问题不清楚:你能发
writer和read的代码吗? -
您是否故意将
i变量传递给您的线程?它可能无法在您的线程中使用,因为它将被主线程修改。 -
@Mathieu 看起来它是由同一个 OP 在之前的问题中以不同的名称发布的:stackoverflow.com/questions/56341997/… 给 OP:强烈建议不要在 SO 上创建多个帐户。
-
@su11 两个函数的代码需要贴出来
-
@EugeneSh。链接的问题是关于另一个问题(即核心转储)。在那之后已经解决了 OP 有一个新问题,所以可以发布一个新问题。那就是说我不确定为什么它是一个新帐户
标签: c multithreading pthreads