【发布时间】:2019-11-06 06:40:29
【问题描述】:
由于某些应用程序原因,我需要在不同的线程中为计时器/io 事件运行回调。
例子:
void EventLoop::createIOEvent(int fd, short kind, event_cb originalCallback, void* originalUserData)
{
...
const auto data{std::make_shared<UserData>(originalUserData, originalCallback, callbackExecutor)};
event* event{event_new(_eventBase, fd, kind, EventLoop::asyncCall, data.get())};
event_add(event, nullptr);
...
}
void EventLoop::asyncCall(int fd, short kind, void* data)
{
const auto userData{*(reinterpret_cast<UserData*>(data))};
ExecutorWrapper(userData._callbackExecutor)
.addRunnable([=]() {
userData._originalCallback(fd, kind, userData._originalUserData);
})
.exec();
}
libevent使用这种方式合法吗?
注意:似乎在 Macos 和 iOS 上一切正常,但在 Android 上,我的测试应用程序只是无缘无故关闭。
【问题讨论】: