如何使pthread在没有pthread_join()的情况下并发工作>> [

问题描述 投票:0回答:2
我正在编写一个程序,其中有多个线程同时工作。在弄乱了一段时间的代码后,我遇到了一个问题,我将向该线程发送一个字符串(char *)进行进一步的操作,而该字符串完全不发送。

稍后,我编写了一个非常简单的代码,其中我只是将字符串发送给线程,然后函数将其打印到控制台。我发现如果不使用pthread_join(),则根本无法使用。我不知道为什么,因为我知道每当调用pthread_join()时,它都会阻塞其他所有线程,并等待该线程结束。

这是简单的程序:

void* prisntstr(void* string); int main(int argc, char *argv[]) { char* string = "Hello!"; pthread_t thread; pthread_create(&thread, NULL, prisntstr, (void*)string); pthread_join(thread, NULL); } void* prisntstr(void* string) { char* str = (char*)string; printf("%s\n", str); }

有人知道我不使用pthread_join()怎么办吗?

我正在编写一个程序,其中有多个线程同时工作。在弄乱了一段时间的代码后,我遇到了一个问题,我将向该线程发送一个字符串(char *)以做进一步的工作...

c string multithreading pthreads
2个回答
1
投票
[如果您删除pthread_join,则程序的问题是main正在返回,从而导致程序退出而未执行任何操作来与另一个线程同步并确定它是否真正完成。当main返回时,就好像您调用了exit,整个过程终止。

0
投票
调用pthread_join()的线程只是在等待另一个线程完成。这是最优雅的方法,因为其他方法更为复杂,并且涉及IPC技术:
© www.soinside.com 2019 - 2024. All rights reserved.