関連するが同じではないことに注意してください: iPhone - Grand Central Dispatch メインスレッド
私は何度もこの質問に失敗したので、ここにソースコードがあります:
メインスレッドで
dispatch_async( dispatch_get_main_queue(), ^{ NSString * str = @"Interrupt myself to do something."} );
スレッドが切り替わると、レジスタがスレッド ローカル ストレージに格納され、コンテキストが切り替わり、プログラム カウンターの新しい場所から実行されます (これは、単に別のスタックを使用するプログラムのコピー内にあり、登録)、メインスレッドに「戻ります」。
それが自分自身を中断するとき、私はそれがいつすべきかを決定するものと、スレッドローカルのものに何が起こるのか疑問に思っています。
私はこれについて少し読みましたが、プログラムが連続的ではないという事実にまだ頭を悩ませています。それらは、「OS がプロセスのチャンクまたはそのチャンク (スレッド) を実行することを決定したときに、小さなチャンクで実行するものです。
私は独学なので、学者にとって標準的なレジスター/asm の知識が不足している可能性があります。
ありがとう。コードが役立つはずです。これは iOS 固有ですが、回答/質問はメインからメインへの言語に関連していると思います。
過去のすべての試みは、私がこれを求めている理由を無視する長い回答をもたらしたので、最後にもう一度繰り返します....
これは同じスレッド用です。メインからメインへ。それは本当にそれ自体を停止し、プログラムカウンターを別の場所に移動し、移動してからブロックで終了しますか? また、これらのことは通常ブランチで変更しないでください (if/for およびブロックも)。
私を正しい方向に向けることもできますが、私が言ったように、以前は質問が誤解されていました.