我在button里面的ended事件请求了一次网络 然后网络返回一个值给我 在这期间 我加了线程锁 但是多次点击以后 还是出现报错
提示是主线程 和 网络线程冲突
网络线程收到响应后,绝对不能直接调用主线程的cocos2dx API。
可以改变一个标志变量。而主线程在 update() 里查询这个标志变量来检测网络线程是否结束了任务。
我已经这么做过了 我用了一个tag,,,设置的 但是还是会蹦
就是不能多次点击 点击一两次 慢慢的点 还是好的额 但是点击快了,,, 就会出现这个问题 我除了加锁 还是设置了 tag 然后检测 如果下次tag ==1 的时候才执行 但是多次点击还是会出错 ,没有走tag ==1的函数,走tag==0的函数 里面写的 就是不处理,, 但是还报错
参考 quick 里的 CCHTTPRequest 实现吧,这个是经过证明完全没问题的多线程 HTTP 接口。
用的就是这个。。。。
你是从 Lua 里调用 CCHTTPRequest 的吗?
是的 我是lua调用的,,, 我在lua中调用了 我现在想问两个问题 我如何获取主线程 。。。然后如何判断超时
Lua中发起请求,Lua中响应结果,那不需要考虑线程问题
贴一下你的代码吧(注意格式)
local function callBack(data)
if data == 1 then
网络成功操作
end
end
local function Click(pSender,eventype)
if eventype == ended then
network.createUrl(“url”,callback)
end
end
里面有 是否结束的判断
这样用的话,不可能出错。
确实是出错了 真的不便宜,,,就是点击过快 有的错误,,, 所以我才来问你的…我自己也想不出解决方法
哦,你是CCS控件,这个我没测试过。但按理说不应该有冲突。
对了,你新建一个项目,然后把这几行代码加进去试试看。排除是其他代码造成的问题。
我已经做过了 真的感觉就是CCs的问题 就是出现了bug 但是我把 network注释掉 就可以一直点 一直点 不知道原因
有没有详细的日志看看?
这个是截图 求亲测