我有一个应用程序,基本流程如下,
开始申请
Code
Start
{
Shared Memory object for semaphore create;
attach object using shmat.(sem_t sem).
semaphore sem Initialization;
thread P1
{
;
}
thread P2
{
Resource Acquire( sem_wait sem ) ;
do Work;
Resource Release( sem_post sem );
}
thread P3
{
;
}
label1:
fork()
child
{
Resource Acquire( sem_wait sem );
do Work;
Resource Release;( sem_post sem );
// child exits
}
parent
{
sleep till child exit;
goto label1;
}
}
这是我申请的基础流程。 child和P2使用相同的sem_t变量。信号量也使用共享对象共享。子级和线程P2在这里同时获取资源
如何互锁资源,以便只有一个人可以访问资源?
即使我也尝试了单独的子线程,而不是线程P2。