gpt4 book ai didi

c - 使用 pthread_create 停止我的方法工作。为什么?使用 C

转载 作者:太空宇宙 更新时间:2023-11-04 07:41:07 25 4
gpt4 key购买 nike

我有一个方法是将信息写入结构。我想让它作为线程运行。

如果我自己调用它,如 childWriter((void*) &sa) 它会起作用。

如果我调用 pthread_create(&writerChild, NULL, childWriter, (void*) &sa),它不再有效。它不会写入共享对象。

这让我发疯。为什么它不起作用,我该如何让它起作用?

最佳答案

是什么让您如此确定代码不会执行?请注意,如果您执行以下操作:

int main(int argc, char* argv[]) 
{
pthread_create(....);
return 0;
}

在上面,程序会立即退出,因为主线程一结束程序就退出了。您需要“加入”线程(使用 pthread_join),以便等待线程终止。请注意,生成一个线程然后加入它实际上比简单地运行线程将要运行的内容更糟糕(因为生成然后加入一个线程等同于连续运行内容,而且它增加了生成/加入的开销)。如果您打算对事物进行多线程处理,通常一个人会产生多个线程,然后分离它们或稍后加入它们。

此外,在线程之间共享可修改的数据时应谨慎;从多个线程读取并在一个线程中修改的任何对象都需要显式锁定对该对象的访问。否则,您可能会陷入各种垃圾和腐败。

关于c - 使用 pthread_create 停止我的方法工作。为什么?使用 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3993686/

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