在使用 uv_async_t 发送消息时,可以通过定义一个结构体来区分不同类型的消息,并在结构体中携带相应的数据:

typedef struct {
    int type;  // 消息类型
    void* data;  // 数据指针
} Message;

在发送消息时,可以将相应的数据结构填充到 Message 中,再通过 uv_async_send 函数发送:

Message msg;
msg.type = MESSAGE_TYPE_XXX;
msg.data = (void*) &data;  // data 是任意结构体

uv_async_send(async_handle, (void*) &msg);

在接收消息时,可以先将传入的参数转换为 Message 结构体,再根据类型进行相应的处理:

void async_callback(uv_async_t* handle, int status, void* data) {
    Message* msg = (Message*) data;

    switch (msg->type) {
        case MESSAGE_TYPE_XXX:
            // 处理类型为 MESSAGE_TYPE_XXX 的消息
            Data* data = (Data*) msg->data;
            // 进行相应的操作
            break;
        case MESSAGE_TYPE_YYY:
            // 处理类型为 MESSAGE_TYPE_YYY 的消息
            ...
            break;
        default:
            break;
    }
}
``
nodejs c++ uv_async_t发送消息消息结构区分类型同时携带data数据数据是任意结构体取得时候进行转换

原文地址: https://www.cveoy.top/t/topic/fJVk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录