考虑一个库函数
registerCallback(int event_type, void(*handler)())
它为某种事件注册了一个处理程序。我想使用这个函数注册几个处理程序,但要包含一个“范围”。一个例子是一个包装函数,如
registerCallback2(int event_type, void* arg, void(*handler)(void*)
这允许注册接收附加参数的处理程序。
我尝试使用 lambda 表达式,但很快了解到捕获某些内容的 lambda 表达式不能转换为函数指针,也不能是类方法,因此 Class 包装器似乎不能正常工作。
您是否知道如何以线程安全的方式解决此问题(可以从多个线程同时调用)?该示例应适用于 GCC 4.7.2 和 Linux。