我有一些库代码有时需要运行多线程,但更通常单线程。这是一组非常频繁调用的小例程。以前的经验和分析表明额外的延迟可能会对性能造成不利影响,所以我想避免不必要的开销。c + + 03空指针与空对象模式:性能影响
我无法为单线程和多线程使用提供单独的库实例,也不能提供线程安全包装单线程版本。这两个限制都是由于库的设计。
我在运行多线程时保护例程的首选方法是使用有限范围的互斥锁。我最初的想法是沿着this SO answer的路线。
但是大多数情况下,这些例程都是单线程运行的,我不喜欢空指针检查的开销。这是在一个非常缓慢的ARM9处理器上运行的,每个周期都会计数。
在实践中,我可能会去与空指针检查和配置文件,看看它的成本,但我想知道是否有更好的方法。例如null对象模式,或让库调用回调函数。