0

不明なサード パーティがコード内の関数ポインターを呼び出すコールバック実装があります。

ただし、多くの言語の問題は、関数が戻った後にコードをトリガーすることです。たとえば、コールバックが呼び出され、呼び出し元のオブジェクトを削除する (この場合は再初期化する) 必要がある場合、コールバックから戻ると例外が発生します。

フックできず、コールバックを呼び出すコードを所有していない/変更できないと仮定すると、関数が戻った後にコードを実行する最良の方法は何ですか?

これを実行する唯一の現実的な方法は、ある種のステート マシンをセットアップし、ワーカー スレッドに状態をチェックさせることです。ただし、これに伴う問題は競合状態の問題であり、リセット コールバックが返されてから、呼び出し元のオブジェクトがリセットされるまでの間にコールバックが呼び出されます。

私が認識していない種類の機能はありますか、またはこれがそのような結果を達成するための最も効率的な方法でしょうか?

4

1 に答える 1