1

シングルスレッドアプリケーション(C ++)は、共有メモリを継続的にロック、書き込み、およびロック解除します-1秒に4回(ループはプログラムで1秒に1回実行するように設定されており、ループには4回の書き込みがあり、読み取りはありません)。

EnterCriticalSection(cs);
WriteToSharedMem();
LeaveCriticalSection(cs);

別のアプリケーション(C)は、数分ごとにこの共有メモリにアクセスします。

このレートでの共有メモリへの書き込みに問題はありますか?

Windows XP
C ++

4

3 に答える 3

8

指定したレート(1秒間に4回)は問題を引き起こしませんが、プロセス間でクリティカルセクションを使用することはできませんミューテックスのようなカーネルレベルの同期オブジェクトが必要です。

于 2012-09-17T22:56:03.477 に答える
4

全くない。1秒間に数千回(または数万回または数十万回)ロックを取得/解放できます。簡単にベンチマークを実行して確認できます。

于 2012-09-17T22:51:35.537 に答える
3

このレートでは絶対にありません!これは非常に遅いですが、クリティカルセクションが使用したいものかどうかはわかりません。スレッドの安全性のみを保証し、アプリケーション間の安全性は保証しないことを覚えています。共有メモリをロックするために何か他のものを探す必要があります。共有メモリでのアトミック操作を保証するには、プロセス間通信(IPC)メカニズムを使用する必要があります。

于 2012-09-17T22:55:58.407 に答える