生产者 - 消费者模式:唤醒UI线程

时间:2013-04-29 18:23:00

标签: android ios

如何将生产者 - 消费者模式与后台线程(生产者)和UI线程实现为消费者?在旧的C ++中,我会使用互斥锁,条件变量和标志,也许还有某种并发队列。生产者线程会将数据放入队列,锁定互斥锁,设置标志,解锁互斥锁,然后发出条件变量信号。

如何使用UI线程实现类似的模式?谢谢。

1 个答案:

答案 0 :(得分:0)

UI线程无法在您的控制下睡眠,因此没有直接的方法。 (好旧的C ++?没有一个UI线程,我想?)

  • 第一种方法是拥有一个生产者和一个消费者线程,通过Linked Blocking Queue或类似的东西连接它们,并在UI线程上让消费者线程发布Runnable。但是,如果消费者线程实际上有一些有意义的职责,例如在一段时间内收集样本,这证明它是独立运行的,那么这才有意义。

  • 第二种方法是让生产者发布Runnable或直接向UI线程发送Handler消息,如果消费者没有任何重量,这更加轻量级和适合( “UI阻止”任务要做。