【发布时间】:2018-10-09 02:35:50
【问题描述】:
我正在尝试创建线程并将来自 for 循环的值传递给每个线程。这是代码段
pthread_t *threadIDs;
int i = 0;
if(impl == 1)
{
threadIDs = (pthread_t *)malloc(sizeof(pthread_t)*reduces);
for(;i < reduces; i++)
{
pthread_create(&threadIDs[i], NULL, reduce,&i);
}
}
它没有传递正确的循环值,这是有道理的,因为我正在创建一个竞争条件。从循环中传递 i 的正确值的最简单方法是什么?
另一个问题,每个线程会在下一个线程被创建和调用之前完成执行吗?
【问题讨论】:
-
像使用 phtread_t 一样分配一个 int 可能是一个解决方案。
-
@u__:肯定有!将相同的地址传递给每个线程,尽管它指向的值在创建新线程之前已更改。
-
哦,是的.. 感谢您的纠正
标签: c multithreading loops