私は主にCで書かれたライブラリを持っています。その一部はスレッドセーフである必要があり、コードのクリティカルセクションを保護するためにグローバルスピンロックを使用しています。
今私の問題は:
スピンロックで保護されたクリティカルセクションの内側からユーザーのコールバックを呼び出す必要があり、それらのコールバックが例外を生成する場合、WindowsではCで_ try/ _finallyを離れることができますエラーが発生した場合でもクリティカルセクション。UNIXでもこれを達成できますか?
私は主にCで書かれたライブラリを持っています。その一部はスレッドセーフである必要があり、コードのクリティカルセクションを保護するためにグローバルスピンロックを使用しています。
今私の問題は:
スピンロックで保護されたクリティカルセクションの内側からユーザーのコールバックを呼び出す必要があり、それらのコールバックが例外を生成する場合、WindowsではCで_ try/ _finallyを離れることができますエラーが発生した場合でもクリティカルセクション。UNIXでもこれを達成できますか?
これは、構造化例外処理と呼ばれます。setjmp
とを使用して実行できますlongjmp
。Cで古くから使用されています。詳細については、こちらをご覧ください:http: //www.freetype.org/david/reliable-c.html