作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我使用 pthread_create 为请求的 http 创建了一个子线程,在我得到数据后我想调用主线程来更新 UI。
pthread_detach();
pthread_exit();
pthread_join();
这三个函数可以用来做什么?为什么?
有没有热心人解决我的困惑?非常感谢!
最佳答案
诚实的回答不是以上任何一种。没有办法从子线程调用主线程,但这并不意味着你不能做你想做的事。
子线程与父线程共享相同的内存空间。您需要做的是为子线程创建一种方式来通知父线程它要向用户 (UI) 发送消息。这可以通过多种不同的方式完成,但一个简单的方法是提供一个函数,该函数仅接收您要发送的消息并将其放入队列。
主线程只需要偶尔检查队列中是否有任何消息,并在看到有消息时将其拉出并放到 UI 上。
您当然需要确保从该队列中压入/弹出是通过互斥锁控制的,但是由于我们正在谈论向用户发送的消息,所以您不应该经常这样做并且应该这样做不会导致任何真正的性能问题。
正如我所提到的,这只是您如何做到这一点的一种想法。虽然有很多方法,但基本思想是线程需要一种相互通信的方法。
关于c++ - pthread_create创建的子线程如何调用主线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23957301/
有人可以向我澄清主线 DHT 规范中的声明吗? Upon inserting the first node into its routing table and when starting up th
我正在尝试使用 USB 小工具驱动程序使嵌入式设备作为 MTP 设备工作。 我知道 Android 从大容量存储设备切换到 MTP 设备已经有一段时间了,并且找到了 source code for M
我是一名优秀的程序员,十分优秀!