在我的问题中,我使用 pthread_create() 创建了一个 pthread,比如 myThread。
它们都共享一个公共变量“done”,用于主线程告诉 myThread 停止从套接字读取。
在我的 pthread 中,我有一个循环:
// done is a common variable
while (!done && socket->read(&buffer) == OK) {
// do something....
}
有时,我想告诉 myThread 停止从套接字读取,所以我这样做:
done = true;
void *test;
pthread_join(myThread, &test);
这会导致比赛条件吗?即 myThread 会不会看到我的主线程在读取调用阻塞之前更新“完成”的值?