2013-04-29 107 views
1

如何使用后台线程作为生产者和用户界面线程来实现生产者 - 消费者模式?在旧的C++中,我会使用一个互斥锁,一个条件变量和一个标志,并且可能使用某种并发队列。生产者线程将数据放入队列,锁定互斥锁,设置标志,解锁互斥锁,然后发送条件变量。生产者 - 消费者模式:唤醒UI线程

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

+0

并发实现将从iOS到Android大幅变化。 – 2013-04-29 18:35:53

回答

0

UI线程无法在你的控制下睡觉,所以没有直接的方法来做到这一点。 (好老C++?没有一个UI线程的话,我想是不是?)

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

  • 第二种方法是让生产者发布帖子Runnable s或将消息直接传递给UI线程,如果消费者没有任何重要(又称UI阻塞)任务,则消息更加轻量级且适合。