関数に値を返す方法はありますか?その関数でスレッドを呼び出す方法はありますか?たとえば:関数に値を返すと、同じ関数でスレッドが開始されますか?
def foo
return fast_function
Thread.new do
slow_function
end
end
この背後にある理由は、同じリソースへのfast_function
とslow_function
書き込みの両方ということです。しかし、fast_function
が実行されて最初に完了し、が共有リソースに書き込まれる前にその値をfoo
に戻す必要があります。 slow_function
がfast_function
より前に完了し、競合状態になる場合があります。
EDIT: 問題の詳細なコンテキスト。これは実装しようとしているサーバー側のイベントに関連しています。私はfast_function
を取得して、イベントIDとリターンとHTMLを計算しようとしています。 slow_function
は、イベントIDを介してクライアントにプロセスが完了したことを通知する役割を担います。しかし、slow_function
は、クライアントイベントがリッスンする場所を知る前にクライアントに通知します。これは、fast_function
がまだイベントIDを返さなかったためです。
を鳴らします。スレッド間で変更可能なデータを持つことは望ましくありません。これは主要なコードの匂いです。 – Anthony