如何通知Tokio有关C所属线程中的事件的信息?

时间:2019-04-11 12:47:20

标签: rust rust-tokio

我使用一个C库,该C库提供一个API来在该C库创建的线程中调用用户提供的函数。我无法处理回调内部的事件,因为它不应该阻塞线程,所以我想以某种方式通知Tokio事件循环已调用我的回调。

我该怎么做?

更确切地说,我有:

register_callback_to_run_inside_c_thread

我想在let (mut tx, rx) = watch::channel("hello"); register_callback_to_run_inside_c_thread(move || { tx.broadcast("world").unwrap(); }); 内传递闭包通知Tokio关于该事件。

首先我尝试:

RefCell

此代码无法编译,因为它在内部某处使用了lazy

我还尝试使用lazy在Tokio中启动一个函数。该代码可以编译,但是在运行时崩溃,因为long dbInsert = dbHelper.addTableRecord(service, portNum, protocol, service); 应该在Tokio创建的线程内执行,而回调在C库创建的线程内运行。

有什么办法可以向Tokio通知该事件吗?

0 个答案:

没有答案