0

速度が重要なマルチスレッド コードを実装しています。いくつかの基本的な書き込み操作がアトミックであることを確実に知っていれば、いくつかのクリティカル セクションを避けることができます。私は次のような学術論文を読みました。

「サイズ t、int、float、およびポインターの基本型の書き込みはアトミックである必要があります。1 つのスレッドによる書き込みは、同じ順序で他のスレッドによって認識される必要があります。最新のほとんどで使用されている IA-32 および Intel-64 CPU アーキテクチャー標準的なコンピューターは、これらの仮定を保証します。」

私がやりたいことは、プロセッサがこれらの操作がアトミックなタイプであるかどうかを実行時に検出できるようにすることです。- AMD プロセッサでも動作するようにしたいと思います。

4

3 に答える 3

2

それは冗長に聞こえます。この .EXE は単純にint main() { return true; }. 実行され、答えが正しいか、プロセッサの種類が .EXE の種類と一致しないため、OS が .EXE をまったく実行できません。

于 2009-10-23T09:40:10.223 に答える
1

これがトピックから外れていることは承知していますが、ロックフリーのコードを作成する予定がある場合は、この最初のロックフリーコード: Herb Sutter によるA False Sense of Securityを必ずお読みください。

記事からの引用:

ロックフリー コードには 2 つの大きな欠点があります。まず、典型的な問題を解決するのに広く役立つわけではありません。多くの基本的なデータ構造は、二重にリンクされたリストでさえも、まだ既知のロックフリーの実装がありません。新しい、または改善されたロックフリーのデータ構造を考え出すことで、少なくとも査読付きジャーナルに論文が掲載され、場合によっては学位を取得できます。

于 2009-10-23T13:42:03.317 に答える
1

これらの CPU/プラットフォーム固有の問題に陥らないようにするには、次のことを検討してください。

c++0x 標準で std::atomic を待機中 (GCC では既に使用可能)

また

インテル TBB の使用

また

ACE_Atomic_Opの使用

于 2009-10-23T14:20:07.963 に答える