在C中使用信号量?

时间:2011-12-08 03:18:01

标签: c++ c semaphore

例如,我有一个机械师(x)过程,其中x可以代表机械师拥有的各种工具。机械师有三种类型,一种用螺丝刀,另一种用锤子,另一种用刷子。

制造产品需要三种工具。机器人过程采用其中一种工具,并从机械师那里获取另外两种工具来完成产品。这个过程无限期地反复迭代(机器人每次都可能采用不同的启动工具)。

我需要使用信号量编写一个进程管理器,真的很困惑:/

基本上我需要伪代码

2 个答案:

答案 0 :(得分:0)

我假设您有多个机器人,每个机器人都在自己的线程中构建产品?

也许是这样的:每个机器人等待并保留螺丝刀,然后为锤子等做同样的事情。在构建产品后释放所有工具。一个重要的考虑因素是以一致的顺序保留工具;否则你就有可能陷入僵局。

答案 1 :(得分:0)

您可能知道,信号量是一种同步机制,用于帮助在多个进程/线程之间同步共享对象。还要记住,因为信号量是特定于进程的,如果一个线程锁定它,另一个线程可以解锁它。现在基于上面的概念,如果你可以正确地定义你的资源,以及进程/线程将如何获取(我的意思是,可以只用一个工具做一些工作,或者他们需要多一个工具)来获得一个独立的完成工作......等等,你和我们互相帮助很容易。