gpt4 book ai didi

c - 线程不并行运行

转载 作者:太空狗 更新时间:2023-10-29 15:32:32 25 4
gpt4 key购买 nike

我想制作并行线程。示例:我的输出类似于:thread1 thread3 thread4 thread2...主要内容:

pthread_t tid;
int n=4;
int i;
for(i=n;i>0;i--){
if(pthread_create(&tid,NULL,thread_routine,&i)){
perror("ERROR");
}
pthread_join(tid,NULL);
}

我的功能(例程)是:

void *thread_routine(void* args){
pthread_mutex_lock(&some);
int *p=(int*) args;
printf("thread%d ",*p);
pthread_mutex_unlock(&some);
}

我总是得到不并行的结果:thread1 thread2 thread3 thread4。我希望这些线程同时运行 - 并行。也许问题出在 pthread_join 位置,但我该如何解决?

最佳答案

您想在所有线程结束后加入线程。您的代码当前所做的是启动一个线程,然后加入,然后启动下一个线程。这实际上只是让它们按顺序运行。

但是,输出可能不会改变,因为这完全取决于哪个线程先获得锁。

关于c - 线程不并行运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27508756/

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