• No : 81
  • 公開日時 : 2007/03/01 03:00
  • 更新日時 : 2024/11/21 11:35
  • 印刷

マルチスレッドで関数を実行した場合、同時に同じポート(ビット)にアクセスするとどうなりますか?

マルチスレッドで関数を実行した場合、同時に同じポート(ビット)にアクセスするとどうなりますか?

カテゴリー : 

回答

対象製品型式: API-DIO(WDM) 及び API-DIO(98/PC) 
  
関連情報: 
 特に問題ありません。 
 但し、まったく同時に実行される訳ではなく、どちらか一方のスレッドが先に実行されることになります。 
  
 注意しなければならないのは、スレッド内でシーケンスがあるような場合です。 
 例: 
  スレッド1:ポート0に対し、00H、01H、02H・・・、FFHを連続して出力 
  スレッド2:ポート0に対し、00Hを出力 
  上記スレッドが同時に実行された場合、各関数の実行タイミングはOSによって制御 
  されますので、スレッド1の出力が連続して行われている最中に、スレッド2が割り 
  込み、値の連続性が失われる可能性があります。 
  
 このような状況(同一ポート(ビット)に対する複数スレッドからのアクセス)が発生するような作りになる場合に 
 は、アプリケーション側でCriticalSectionの機能等を使って同期を取るようにして下さい。