HarmonyOS NAPI开发相关问题

napi_call_threadsafe_function调用太快,数据出现了错误,必须使用队列的方式,等napi_call_threadsafe_function回调结束再进行下一次napi_call_threadsafe_function吗?

HarmonyOS
2024-09-11 11:34:29
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
zbw_apple

napi_call_threadsafe_function执行函数为异步的,所以在多次调用执行结果不会按照同步任务那样顺序输出,使用队列的方式可以把异步任务按照顺序执行。

1.auto *data = new std::pair<const char *, ssize_t>(cMessage, length);这个地方使用的是cMessage,它指向的是message.c_str();里面的内存,message是一个局部变量,作用域在for这里。

2.handleSSLMessage函数中receivedData变量的first的值很容易就是一个野指针,如果其指向的内存被分配给其他使用,内容很容易就会读取不正确。出现的现象:获取到的数据有时正常,有时不正常,如果存在对指向的内存进行写处理的操作,会crash。

建议修改成:

auto *data = new std::pair<const std::string, ssize_t>(message, length);//直接传std::string类型。 
auto *receivedData = static_cast<std::pair<const std::string, ssize_t> *>(data); 
const char *message = receivedData->first.c_str();
分享
微博
QQ
微信
回复
2024-09-11 17:22:59
相关问题
Flutter 开发资料相关问题
319浏览 • 1回复 待解决
音频录制开发相关问题
5619浏览 • 1回复 待解决
华为开发者联盟相关问题
12673浏览 • 2回复 待解决
HarmonyOS音频相关问题
402浏览 • 1回复 待解决
HarmonyOS RN相关问题
376浏览 • 1回复 待解决
HarmonyOS CardRecognition相关问题
74浏览 • 1回复 待解决
HarmonyOS protobuf相关问题
342浏览 • 1回复 待解决
HarmonyOS 地图相关问题
509浏览 • 1回复 待解决
HarmonyOS 证书相关问题
288浏览 • 1回复 待解决
HarmonyOS AccountKit相关问题
354浏览 • 1回复 待解决
HarmonyOS Grid相关问题
300浏览 • 1回复 待解决
HarmonyOS BindSheet相关问题
289浏览 • 1回复 待解决
HarmonyOS 线程相关问题
330浏览 • 1回复 待解决
HarmonyOS KVStore 相关问题
114浏览 • 1回复 待解决
HarmonyOS图片上传相关问题
375浏览 • 1回复 待解决
HarmonyOS 弹窗的相关问题
209浏览 • 1回复 待解决
HarmonyOS 列表List相关问题
298浏览 • 1回复 待解决
HarmonyOS 视频录制相关问题
303浏览 • 0回复 待解决
HarmonyOS AOT相关问题咨询
308浏览 • 1回复 待解决
HarmonyOS 路由栈相关问题
168浏览 • 1回复 待解决
HarmonyOS dialog弹窗相关问题
319浏览 • 1回复 待解决
HarmonyOS 媒体问题相关咨询
94浏览 • 1回复 待解决