這是我在這個社區的第一篇文章,所以請耐心等待。互斥量保護宏
有沒有一種方法可以在宏本身中互斥保護宏。
例如,
#define FUNCTION_ \
doSomething()
基本上,我希望通過自己做這樣的事情
#define FUNCTION_ \
mutex.lock \
doSomething() \
mutex.unlock
如需進一步信息,宏都在頭文件中聲明,(無名稱空間或類),它處理對API的調用。我們正在使用C++。這個頭文件被多個項目利用,因此宏觀本身的改革是不可能的。有關宏的更多詳細信息,它會調用log4CXX.log4CXX是線程安全的;然而,使用這個宏的兩個線程同時進行寫入調用並不是線程安全的。對於這個問題,Helgrind抱怨Valgrind。在代碼中保護宏的互斥鎖修復了這個問題,但是不是每個單獨的調用都保護互斥鎖,而是讓宏保護自己的調用。
您使用的是C還是C++?如果你使用的是C++,我會建議除了宏之外的東西,並使用鎖守。 – NathanOliver
你的問題到底是什麼?你可以自己試試看,如果有效的話。只需添加缺少的括號,就完成了。 –
我們使用C++。該項目使用宏來封裝log4CXX的API調用。 log4CXX是線程安全的;然而,使用這個宏的兩個線程同時進行寫入調用並不是線程安全的。對於這個問題,Helgrind抱怨Valgrind。在代碼中保護宏的互斥鎖修復了這個問題,但是不是每個單獨的調用都保護互斥鎖,而是讓宏保護自己的調用。 – HunterLee