seraphyの日記

日記というよりは過去を振り返るときのための単なる備忘録

同期オブジェクトを使用せずに複数プロセスで共有データを保護する方法

	while( InterlockedExchange( &lock, 1 ) != 0 ) {
		Sleep( 100 );
	}
	__try {
		......
	}
	__finally {
		InterlockedExchange( &lock, 0 );
	}

共有データ上にロック用のLONG値の領域を確保。
InterlockedExchange API(win95でもサポートされている)を用いて保護ブロックを構成する。
待機側のレスポンスを改善するにはSleepをなくせばよいがCPU使用率が上がるし、CPU使用率を下げるためにSleepを入れればレスポンスが落ちるので、ロックの競合が頻発するような状況には適さない。