注意,相关但不相同:iPhone - Grand Central Dispatch 主线程
我在这个问题上失败了很多次,所以这里是源代码:
在主线程上
dispatch_async( dispatch_get_main_queue(), ^{ NSString * str = @"Interrupt myself to do something."} );
我只是好奇,当一个线程切换时,它将其寄存器存储在线程本地存储中,切换上下文,从程序计数器中的新位置运行(我假设它位于程序的副本中,它只是使用不同的堆栈和注册),然后它“返回”到主线程。
当它自己中断时,我只是想知道什么决定什么时候应该中断,以及线程本地的东西会发生什么。
我已经对此进行了一些阅读,但我仍然在思考程序不连续的事实。它们只是“当操作系统决定运行一个进程的一个块或它的块(线程)时小块做的事情。
我是自学成才的,这可能会增加我对注册/汇编知识的缺乏,这可能是任何学者的标准。
谢谢。代码应该有所帮助,这是特定于 iOS 的,但我相信答案/问题与从 main 到 main 的任何语言有关。
由于过去的每一次尝试都导致冗长的答案忽略了我问这个的原因,所以我将最后一次迭代......
这是针对同一线程的。主对主。它真的只是自行停止,将程序计数器移到别处,然后在块处结束吗?此外,这些东西通常不会在分支处改变(if/for 和块)。
将我指向正确的方向也很有效,但就像我说的那样,之前的问题被误读了。