c为不同的应用程序进行互斥编程

时间:2015-05-27 06:10:37

标签: c multithreading multiprocessing deadlock mutual-exclusion

我有一份功课。 每个应用程序必须等待他们的每个活动。 我可以将此场景编写为pthread,但是,我必须使用不同的应用程序编写此场景。

我可以使用以下代码将应用程序编写为pthread;

pthread_mutex_lock(&mutex2);
printf("I am in i");
pthread_mutex_unlock(&mutex2);

向我要求;用户按以下格式运行应用程序;

./application 1
./application 2
./application 3

1,2,3表示线程id值,每个应用程序包含循环,每个应用程序以运行代码。

第二个应用程序在第一个应用程序完成第一个循环之前不会启动,第三个应用程序必须等到第一个和第二个应用程序的第一个循环结束。

我该怎么写这个应用程序?

谢谢

1 个答案:

答案 0 :(得分:0)

您希望的行为可以通过interprocess communication (IPC)来实现。例如,它可以通过共享存储器实现,其中bool标志位于其中。我不知道你要为自己的应用程序编写什么操作系统,所以现在可以说没有更具体的内容。

“./” pthread 判断我建议目标操作系统是* nix系列之一,但您最好澄清一下。如果是这种情况,shmget和公司可能会满足您的需求。

顺便说一句,你写道你将开始这样的应用程序:

./application 1
./application 2
./application 3

这意味着它们将一个接一个地运行,否则你将在后台启动它们:

./application 1&

如果你必须完全像你描述的那样运行它们,那么你必须 fork 并退出parent,以便将控制权返回给shell并在子进程中运行你的循环。

同样,对于具有类似bash的shell的* nix系统而言,这是不可或缺的。