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
相关问题
音频录制开发相关问题
5725浏览 • 1回复 待解决
Flutter 开发资料相关问题
431浏览 • 1回复 待解决
华为开发者联盟相关问题
12848浏览 • 2回复 待解决
HarmonyOS音频相关问题
541浏览 • 1回复 待解决
HarmonyOS RN相关问题
523浏览 • 1回复 待解决
HarmonyOS CardRecognition相关问题
166浏览 • 1回复 待解决
HarmonyOS protobuf相关问题
474浏览 • 1回复 待解决
HarmonyOS 地图相关问题
638浏览 • 1回复 待解决
HarmonyOS 证书相关问题
382浏览 • 1回复 待解决
HarmonyOS BindSheet相关问题
451浏览 • 1回复 待解决
HarmonyOS string相关问题
59浏览 • 1回复 待解决
HarmonyOS AccountKit相关问题
492浏览 • 1回复 待解决
HarmonyOS 线程相关问题
517浏览 • 1回复 待解决
HarmonyOS Grid相关问题
390浏览 • 1回复 待解决
HarmonyOS KVStore 相关问题
227浏览 • 1回复 待解决
HarmonyOS 列表List相关问题
458浏览 • 1回复 待解决
HarmonyOS图片上传相关问题
482浏览 • 1回复 待解决
HarmonyOS 视频录制相关问题
425浏览 • 0回复 待解决
HarmonyOS 网络相关问题咨询
25浏览 • 1回复 待解决
HarmonyOS 弹窗的相关问题
281浏览 • 1回复 待解决
HarmonyOS VoIP通知相关问题
45浏览 • 1回复 待解决
HarmonyOS dialog弹窗相关问题
446浏览 • 1回复 待解决