线程函数
void* dosomething(void *arg)
{
步骤1
步骤2
步骤3
核心步骤
{
核心步骤1
核心步骤2.。。
}
...
}
for(int i=0;i<n;i++)
{
pthread_create(...dosomething...);
}
这样,会开好多个线程来执行好多个dosomething,
各个线程里的dosomething里的代码执行顺序是杂乱的,第1个dosomething刚执行完步骤1,第2个dosomething,就执行了步骤1,然后第1个dosomething又执行了步骤2。。。
现在的需求是,每个dosomething里的步骤1、2、3这些,执行顺序可以乱,但是,核心步骤里的代码,必须是一个dosomething执行完,再允许另一个dosomething执行,但是允许先执行dosomething2里的核心步骤,后执行dosomething1里的核心步骤,也可以。
------解决方案--------------------需要互斥锁同步一下吧
------解决方案--------------------+++1
------解决方案--------------------一把锁就解决了。
------解决方案--------------------核心步骤外面包一层控制,即互斥锁
------解决方案--------------------lock()
{
核心步骤1
核心步骤2.。。
}
unlock()