2010-02-25 172 views
2

我在问总体多线程问题。例如,我锁定了一个互斥锁并恢复了任务,然后我想暂停它,我的问题是,我应该在挂起它之前解锁互斥锁吗?因此,当我用互斥锁再次恢复时,它会成功恢复?暂停/恢复任务

我刚开始使用多线程的东西,我很难搞清楚这些概念。

非常感谢。

+1

我想你必须告诉我们更多关于你在做什么之前,任何人都可以给出一个非常有意义的答案。举个例子,你为什么暂停该线程? – 2010-02-25 23:30:41

回答

2

一般而言,只要您需要“互斥”控制任何您正在同步的对象,就一定要持有互斥锁。我会说,继续抓住,释放它会有问题。也许你正在做的更全面的解释?我的方法是异步执行而不是多线程。通常更好地使用系统资源。

+0

你是什么意思异步?多线程是一个不同步的实现? – domlao 2010-03-04 03:03:29

1

不可以。即使任务被暂停,您也应该持有互斥锁。

该互斥量用于保护多个线程同时访问它的一段代码。如果您在暂停时释放互斥锁,则允许其他线程访问该互斥体在那里阻止的那部分代码。

如果您认为不需要保持互斥锁,则表示您需要重新设计互斥锁的锁定时间和释放时间(根据您要保护的内容)。这应该独立于线程的恢复/暂停。