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 开发资料相关问题
267浏览 • 1回复 待解决
音频录制开发相关问题
5582浏览 • 1回复 待解决
华为开发者联盟相关问题
12630浏览 • 2回复 待解决
HarmonyOS protobuf相关问题
294浏览 • 1回复 待解决
HarmonyOS RN相关问题
329浏览 • 1回复 待解决
HarmonyOS 地图相关问题
423浏览 • 1回复 待解决
HarmonyOS音频相关问题
347浏览 • 1回复 待解决
HarmonyOS 线程相关问题
295浏览 • 1回复 待解决
HarmonyOS KVStore 相关问题
67浏览 • 1回复 待解决
HarmonyOS BindSheet相关问题
216浏览 • 1回复 待解决
HarmonyOS AccountKit相关问题
311浏览 • 1回复 待解决
HarmonyOS 证书相关问题
268浏览 • 1回复 待解决
HarmonyOS Grid相关问题
254浏览 • 1回复 待解决
HarmonyOS 列表List相关问题
213浏览 • 1回复 待解决
HarmonyOS 视频录制相关问题
259浏览 • 0回复 待解决
HarmonyOS图片上传相关问题
328浏览 • 1回复 待解决
HarmonyOS 弹窗的相关问题
180浏览 • 1回复 待解决
HarmonyOS Video组件相关问题
261浏览 • 1回复 待解决
HarmonyOS 路径动画相关问题
460浏览 • 1回复 待解决
HarmonyOS dialog弹窗相关问题
279浏览 • 1回复 待解决
HarmonyOS AOT相关问题咨询
250浏览 • 1回复 待解决
HarmonyOS 路由栈相关问题
124浏览 • 1回复 待解决
HarmonyOS文件读写相关问题
383浏览 • 1回复 待解决
HarmonyOS操作系统相关问题
244浏览 • 1回复 待解决