Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
如何以后台线程作为生产者,UI线程作为消费者来实现生产者-消费者模式?在好的旧 C++ 中,我会使用互斥体、条件变量和标志,也许还有某种并发队列。生产者线程将数据放入队列,锁定互斥体,设置标志,解锁互斥体,然后向条件变量发出信号。
如何使用 UI 线程实现类似的模式?谢谢你。
UI 线程无法在您的控制下休眠,因此没有直接的方法可以做到这一点。(好旧的 C++?那么我想没有UI 线程?)
第一种方法是有一个生产者和一个消费者线程,通过链接阻塞队列或类似的东西连接它们,并让消费者线程Runnable在 UI 线程上发布。但这只有在消费者线程实际上有一些有意义的职责要执行时才有意义,例如在一段时间内收集样本,这证明它独立运行等是合理的。
Runnable
第二种方法是让生产者直接发布Runnable或传递Handler消息到 UI 线程,如果消费者没有任何繁重的(也就是 UI 阻塞)任务要做,这种方法更轻量级且适用。
Handler