这是我在这个社区的第一篇文章,所以请耐心等待。互斥量保护宏
有没有一种方法可以在宏本身中互斥保护宏。
例如,
#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