在 Xcode 4 iPad 模拟器上,当我执行 NSThread +setThreadPriority,然后检查 threadPriority,无论我设置什么,结果始终为 0.5。(+setThreadPriority 返回 YES/“成功”返回码。)
这纯粹是一个模拟器问题,还是 setThreadPriority 根本不起作用?
(我试图找到某种方法来强制“后台”线程让出 CPU——至少在模拟器上 pthread_yield_np 似乎不起作用。)
补充: 显然模拟器已经脑残了。即使在“后台”线程中休眠 5 秒也不允许主线程运行。(主线程正在等待@synchronize
锁,而“后台”线程在“获取锁实例”代码中,远在它有机会实际获得锁之前。)
(除了,叹息,“后台”线程可能有递归锁。我想知道是否有办法测试它?)
添加更多:是的,问题不在于无法在模拟器上切换线程,而是这个应用程序在长时间运行的后台线程中有一些递归锁,并且这些锁(在堆栈中的早期)正在阻止主线程。认为需要。
(但很明显 setThreadPriority在模拟器上不起作用。)