Quantcast
Channel: Cocos中文社区 - 最新主题
Viewing all articles
Browse latest Browse all 88737

关于c++在多线程中通过jsb调用js代码的问题

$
0
0

@251804974 写道:

 我在c++中开启了一个多线程,然后在这个多线程中用ScriptingCore调用js代码。出现访问冲突的内存报错,仔细检查了一边,方法中并没有访问资源,只有一个简单的全局变量的访问。

  错误信息
  0x530C7E8A (mozjs-33.dll) (HQT.exe 中)处的第一机会异常:  0xC0000005:  读取位置 0x00000004 时发生访问冲突。
  0x530C7E8A (mozjs-33.dll) (HQT.exe 中)处有未经处理的异常:  0xC0000005:  读取位置 0x00000004 时发生访问冲突。

  c++中多线程中调用的代码
  ScriptingCore* scrCore = ScriptingCore::getInstance();
  JSContext* jc = scrCore->getGlobalContext();
  jsval owner = OBJECT_TO_JSVAL(scrCore->getGlobalObject());
  jsval codeid;
  codeid = uint32_to_jsval(jc, codeId);
  bool bCodeId = scrCore->executeFunctionWithOwner(owner, "CommonServerResponse", 1, &codeid);

js中的代码
var CommonServerResponse = function(codeid){
if (!codeid) {return;}
cc.log("2222222222222222="+codeid);
var info = g_ServerRequestInfo[codeid];
if (info) {
cc.log("33333333333333333"+codeid);
DiyReceiveData(codeid);
var callback = info["callback"];
var protocol = info["protocol"];
var layer = info["layer"];

	var Builder = g_ProtoBufBuilder.build(protocol);
	        var protoObj = Builder.decode(g_SerProBuf);
	callback(protoObj);
	layer.FadeOut();
	layer = null;
}

};

帖子: 2

参与者: 1

阅读整个主题


Viewing all articles
Browse latest Browse all 88737

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>