我有一些庫代碼有時需要運行多線程,但更通常單線程。這是一組非常頻繁調用的小例程。以前的經驗和分析表明額外的延遲可能會對性能造成不利影響,所以我想避免不必要的開銷。c + + 03空指針與空對象模式:性能影響
我無法爲單線程和多線程使用提供單獨的庫實例,也不能提供線程安全包裝單線程版本。這兩個限制都是由於庫的設計。
我在運行多線程時保護例程的首選方法是使用有限範圍的互斥鎖。我最初的想法是沿着this SO answer的路線。
但是大多數情況下,這些例程都是單線程運行的,我不喜歡空指針檢查的開銷。這是在一個非常緩慢的ARM9處理器上運行的,每個週期都會計數。
在實踐中,我可能會去與空指針檢查和配置文件,看看它的成本,但我想知道是否有更好的方法。例如null對象模式,或讓庫調用回調函數。