【发布时间】:2017-01-25 10:28:41
【问题描述】:
我有 2 个进程同步的问题。我有 3 个 X 进程和 5 个 Y 进程。我还有 2 个资源 - A 和 B。
资源'A'最多可以同时被3个进程使用,并且通过访问资源'B'相互排除是必要的。
处理 X 和 Y:
void processX()
{
while (1)
{
AccessToResource(B);
AccessToResource(A);
}
}
void processY()
{
while (1)
{
AccessToResource(A);
AccessToResource(B);
}
}
我怎样才能使用信号量、互斥量、事件,最短的方式做到这一点?
现在我有
CSemaphore sem(1,5,L"semaph");
在访问资源之前和之后通过 sem.Lock() 和 sem.Unlock() 使用它,但它不是很好。
【问题讨论】:
-
所以您不需要同时锁定对 A 和 B 的访问?对每个资源的访问可以与其他资源分开处理吗?
-
进程 X 和 Y 同时运行。我不知道如何处理它,这是我的第一个任务
-
@Pawel C++ 标准没有进程的概念,标准库没有进程间通信 API。您需要指定您打算在问题中使用的 API。
-
@user2079303 术语“进程”、“信号量”和“互斥量”是众所周知且定义明确的概念。应该可以使用一般概念来回答,而不需要特定的实现或 API。如果 OP 在实施一般技术方面需要帮助,那么 OP 可以发布另一个问题来询问这个问题(当然,还有一个 OP 尝试过的示例,以及该示例的具体问题的描述,以及指向此的链接问题)。
-
@Pawel 您能否更具体地说明您遇到的问题?你说你尝试了一些“但它不是很好”?你是什么意思?您是否想要一个通用的答案而不使用特定的实现或 API?您对特定实现或 API 有疑问吗?
标签: c++ process synchronization semaphore