gpt4 book ai didi

c - c中的线程数组创建

转载 作者:太空宇宙 更新时间:2023-11-04 00:24:16 24 4
gpt4 key购买 nike

我使用 POSIX 线程创建了两个线程数组。有两个线程函数 student 和 teacher。下面给出了我的示例程序。我有一个小问题,我已经在代码中注释掉了。我在主函数的最后写了一个线程连接函数。这样写好不好,有什么问题吗?

示例代码片段:

int main(void)
{
pthread_t thread[25];
int i;
int id1[25]; //for students
int id2[6]; //for teachers

for(i=0;i<25;i++)
{
id1[i]=i;
id2[i]=i;
pthread_create(&thread[i],NULL,student,(void*)&id1[i] );

if(i<6)
{
pthread_create(&thread[i],NULL,teacher,(void*)&id2[i]);
}
}



for (i=0;i<25;i++)
{
pthread_join(thread[i],NULL); //problem in this line
}

return 0;

最佳答案

      pthread_create(&thread[i],NULL,student,(void*)&id1[i] );

if(i<6)
{
pthread_create(&thread[i],NULL,teacher,(void*)&id2[i]);
}

对于 i<6 , thread[i] 中的值对于 student被后来的pthread_create()覆盖,这使得 6 个线程泄漏。 main() 时,6 个可连接线程仍在运行即将返回。

关于c - c中的线程数组创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33187570/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com