c++反発量

1156 ワード

反発量は変数であり、この変数は2つの状態の1つの変数にすることができる:ロック解除とロック解除であるため、1つのバイナリビットで表すだけであるが、実際には、1つの整数量、0はロック解除を表し、他のすべての値はロックを表すことが多い.
反発量の役割は、共有リソースまたは小さなコードを管理することです.1つのスレッド(またはプロセス)が臨界領域にアクセスする必要がある場合(臨界領域は1つのスレッドのみがアクセスできる)mutex_を呼び出します.lock.反発量が現在ロック解除されている(すなわち、臨界領域が使用可能である)場合、この呼び出しは成功し、呼び出しスレッドは自由に臨界領域に入ることができる.一方、反発量がロックされている場合、呼び出しスレッドは、臨界領域(臨界領域では1つのスレッドのみが入ることが許可される)におけるスレッドが完了し、mutex_を呼び出すまでブロックされる.unlock.複数のスレッドが反発量にブロックされている場合、ランダムに1つのスレッドが選択され、ロックが許可されます.
//             ,         
#include "stdafx.h"
#include 
#include 
#include 
using namespace std;
mutex mMutexLoopQueue;
void ceshi1()
{
	//unique_lock lock(mMutexLoopQueue);
	while (true)
	{
		cout << "ceshi1";
	}
}
void ceshi2()
{
	unique_lock lock(mMutexLoopQueue);
	while (true)
	{
		cout << "ceshi2";
		ceshi1();
	}
}

int _tmain(int argc, _TCHAR* argv[])
{
	ceshi2();
	return 0;
}
ceshi1()    unique_lock lock(mMutexLoopQueue);   ,       ceshi2,     ceshi1
    unique_lock lock(mMutexLoopQueue);