【发布时间】:2017-03-01 22:34:15
【问题描述】:
我有一些库代码有时需要多线程运行,但更常见的是单线程。这是一组被非常频繁地调用的小例程。以前的经验和分析表明,额外的延迟可能会损害性能,所以我想避免不必要的开销。
我无法为单线程和多线程使用提供单独的库实例,也无法为单线程版本提供线程安全包装器。这两个限制都是由于库的设计。
在运行多线程时保护例程的首选方法是使用作用域互斥锁。我最初的想法是this SO answer。
但是大多数时候例程都是单线程运行的,我不喜欢空指针检查的开销。这是在非常慢的 ARM9 处理器上运行的,每个周期都很重要。
在实践中,我可能会使用空指针检查和配置文件来查看它的成本,但我想知道是否有更好的方法。例如空对象模式,或者让库调用回调。
【问题讨论】:
标签: c++ multithreading c++03