設定の同期、というか子処理は、メイン処理と同じ設定値のコピー値で動作させるところで、直す部分が多すぎて、大変です。ビットフィールドは使うんじゃなかったかな。
struct A
{
UINT isA:1;
UINT isB:1;
UINT isC:1;
UINT isD:1;
} a;
a.isA = TRUE;
a.isB = FALSE;
a.isC = TRUE;
a.isD = FALSE;
int v = (int)&a;
で無理やり変換してもいいですが、if(a.isB)のアセンブリ
mov edx,dword ptr [a]
shr edx,1
and edx,1
がif(v & 0x2)のandの
mov eax,dword ptr [v]
and eax,2
に比べ1命令多いので、ビットフィールドはやめることにします。たった1命令減ってもナノセカンドも差が出ないと思いますが、ifの使用箇所が多いのと、命令が少なくなることはデメリットではないので