我使用 pthread_create 为请求的 http 创建了一个子线程,在我获得数据后我想调用主线程来更新 UI。
pthread_detach();
pthread_exit();
pthread_join();
这三个函数可以用来做什么?为什么?
有没有热心人能解我的疑惑?非常感谢!
我使用 pthread_create 为请求的 http 创建了一个子线程,在我获得数据后我想调用主线程来更新 UI。
pthread_detach();
pthread_exit();
pthread_join();
这三个函数可以用来做什么?为什么?
有没有热心人能解我的疑惑?非常感谢!
诚实的答案是以上都不是。没有办法从子线程调用主线程,但这并不意味着你不能做你想做的事。
子线程与父线程共享相同的内存空间。您需要做的是为子线程创建一种方法来通知父线程它想要向用户 (UI) 发送消息。这可以通过多种不同的方式完成,但一种简单的方法是提供一个函数,该函数只获取您要发送的消息并将其放入队列中。
主线程只需要偶尔检查该队列是否有任何消息,并在看到有消息时将其拉出以放入 UI。
您当然需要确保从该队列推送/弹出是由互斥锁控制的,但是由于我们正在谈论向用户发送消息,因此您不应该经常这样做,也不应该导致任何真正的性能问题。
正如我所提到的,这只是你如何做到这一点的一个想法。虽然有很多方法,但基本思想是线程需要一种相互通信的方法。