「イベントドリブン」とは、アプリケーションが「そこに座って」、イベントが次に何が起こるかを駆動するのを待つことを意味します。典型的なイベントは、さまざまな形式のマウスまたはキーボードのアクティビティです。
対照的に、「プロセス駆動型」(多くの場合「手続き型プログラミング」)とは、物事を「監視」するプログラムがあり、それが実行することになっていることを常にかき回すことを意味します。
両方を同時にコーディングすることもできますが、そうすることは「高度な演習」です。少なくとも、そう考える人もいます。
さて、競合状態の大きな問題は、実際には、どのような絡み合いが発生する可能性があるかという問題です。データベースの場合、これが完璧な例です。グローバル変数でリターンエラーステータスをコーディングし、コード内のアクティビティ間に一時的な重複がある場合(多くの場合、「イベント駆動型」環境で発生しますが、純粋な手続き型プログラミングでも発生する可能性があります)間違ったエラーメッセージが表示される可能性があります。何かを起こしたスレッドにエラーがあり、高速のスレッドにはエラーがなかったが、その後に高速のスレッドが来て、ステータスを成功に設定した場合を想像してみてください。「スレッドセーフ」プログラミングが回避する条件があります。これは「競合状態」の一例にすぎません。
各スレッドのアクションが独立している限り、競合状態自体はありません。すべてはアプリケーションのロジックとそのニーズに依存します。ここでは、開発者だけが、それらが何であるかを知ることはできません。...これは航空会社の予約システムですか?...