Node.js C++ uv_async_t 消息发送与类型区分
使用 Node.js C++ 中的 uv_async_t 发送消息时,可以通过定义一个结构体来区分不同类型的消息,并携带相应的数据。例如:
typedef enum {
MSG_TYPE_1,
MSG_TYPE_2,
MSG_TYPE_3
} message_type_t;
typedef struct {
message_type_t type;
void *data;
} message_t;
上面的代码定义了一个枚举类型 message_type_t,表示不同类型的消息,还定义了一个结构体 message_t,包含一个类型字段和一个指向数据的指针。
在发送消息时,可以先创建一个 message_t 结构体,设置相应的类型和数据,然后将其作为参数传递给 uv_async_send 函数即可:
message_t msg;
msg.type = MSG_TYPE_1;
msg.data = some_data;
uv_async_send(async_handle, &msg);
在处理接收到的消息时,可以通过 message_t 结构体中的 type 字段来判断其类型,并根据需要处理相应的数据:
void async_callback(uv_async_t* handle) {
message_t *msg = (message_t*) handle->data;
switch (msg->type) {
case MSG_TYPE_1:
// handle message type 1 with msg->data
break;
case MSG_TYPE_2:
// handle message type 2 with msg->data
break;
case MSG_TYPE_3:
// handle message type 3 with msg->data
break;
default:
break;
}
free(msg);
}
上面的代码中,async_callback 函数中先将传递给 uv_async_t 的数据转换为 message_t 结构体,然后根据其 type 字段来处理不同类型的消息,并在处理完毕后释放该结构体。
原文地址: https://www.cveoy.top/t/topic/opuB 著作权归作者所有。请勿转载和采集!