gtalk thread 的问题

来源:互联网 发布:mysql时间差 编辑:程序博客网 时间:2024/04/29 23:20

makecall时有时要等好长时间, 有时会等50秒, 经过跟踪程序, 我发现是因为在向thread发消息时调用了wait(), 程序自此进入了睡眠, 直到有数据从网上传来才被唤醒.

 

仔细看了一下代码, 发现问题是这样的, 调wait()睡眠后, 还是有调wakeup()的, 只是此时wakeup的不是我们希望的线程, 就是说此时有多个线程在等待, 我们的线程还是没有被唤醒.

 

作为临时的解决方法, 设置了一个标志, has_wait, 当看到有has_wait == true, 就调用wakeup().

 

原创粉丝点击