ビットフィールド
加えて、多くの一般的なコンパイラは、ビットメンバの読み書きに対して、非効率なコードを生成する(プロセッサのワード単位でロード/ストアするほうが効率的)。さらに、ビットフィールドに関しては(特にマルチプロセッサシステムの場合は)、潜在的に重大なスレッドセーフ性の問題がある。ほとんどのCPUではメモリ上の任意のビットの集合を扱えず、最小でもバイト単位のアドレッシングしかできないためである。以下のコード例はミューテックスを使用したとしても、スレッドセーフではない。
ほとんどのCPUでは、flag と counter を別々にロードしてストアすることは、ハードウェアレベルで不可能である。これがスレッドセーフであるためには、counter 自身がスレッドセーフである必要がなくても、「flag と counter の両方」について、全てのアクセスの前後でミューテックスをロック・アンロックする必要がある。同様に、ビット順序によって、ビットフィールドの正確な構造はワードサイズに依存する。