我有一个主要用 C 编写的库,它的某些部分应该是线程安全的,我使用全局自旋锁来保护代码的关键部分。
现在我的问题是:
我应该从受自旋锁保护的关键部分内部调用用户的一些回调,以防这些回调产生异常,在 Windows 上,我在 C 中有一个_try / _finally 能够离开即使发生错误,关键部分也是如此。我也可以在 UNIX 上完成这个吗?
我有一个主要用 C 编写的库,它的某些部分应该是线程安全的,我使用全局自旋锁来保护代码的关键部分。
现在我的问题是:
我应该从受自旋锁保护的关键部分内部调用用户的一些回调,以防这些回调产生异常,在 Windows 上,我在 C 中有一个_try / _finally 能够离开即使发生错误,关键部分也是如此。我也可以在 UNIX 上完成这个吗?
这称为结构化异常处理。它可以通过使用setjmp
和来完成longjmp
。它已经在 C 语言中使用了很长时间。有关详细信息,请参见:http ://www.freetype.org/david/reliable-c.html