gpt4 book ai didi

c++ - pthread_create创建的子线程如何调用主线程?

转载 作者:行者123 更新时间:2023-11-28 02:47:30 27 4
gpt4 key购买 nike

我使用 pthread_create 为请求的 http 创建了一个子线程,在我得到数据后我想调用主线程来更新 UI。

pthread_detach();
pthread_exit();
pthread_join();

这三个函数可以用来做什么?为什么?

有没有热心人解决我的困惑?非常感谢!

最佳答案

诚实的回答不是以上任何一种。没有办法从子线程调用主线程,但这并不意味着你不能做你想做的事。

子线程与父线程共享相同的内存空间。您需要做的是为子线程创建一种方式来通知父线程它要向用户 (UI) 发送消息。这可以通过多种不同的方式完成,但一个简单的方法是提供一个函数,该函数仅接收您要发送的消息并将其放入队列。

主线程只需要偶尔检查队列中是否有任何消息,并在看到有消息时将其拉出并放到 UI 上。

您当然需要确保从该队列中压入/弹出是通过互斥锁控制的,但是由于我们正在谈论向用户发送的消息,所以您不应该经常这样做并且应该这样做不会导致任何真正的性能问题。

正如我所提到的,这只是您如何做到这一点的一种想法。虽然有很多方法,但基本思想是线程需要一种相互通信的方法。

关于c++ - pthread_create创建的子线程如何调用主线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23957301/

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