Asynchronous 异步任务如何中断主线程(从它本身-主线程)?

Asynchronous 异步任务如何中断主线程(从它本身-主线程)?,asynchronous,Asynchronous,我似乎找不到这个具体的实现细节,甚至找不到在操作系统手册中找到这个的指针 基本上,main线程本身调用一个异步任务(稍后运行)。所以什么时候开 它是否等待运行循环完成?或者它只是随机中断在任何函数中间的运行循环? 我知道寄存器将是相同的(除非是单独的线程),但不是真正的指令指针和堆栈发生了什么,如果发生了什么 谢谢一个进程的线程都共享相同的地址空间,而不是相同的CPU寄存器。线程调度取决于编程语言和O/S。通常有明确的调度点,如从系统调用返回、阻塞等待I/O完成,或解释语言的p代码指令之间。一些

我似乎找不到这个具体的实现细节,甚至找不到在操作系统手册中找到这个的指针

基本上,main线程本身调用一个异步任务(稍后运行)。所以什么时候开

它是否等待运行循环完成?或者它只是随机中断在任何函数中间的运行循环?

我知道寄存器将是相同的(除非是单独的线程),但不是真正的指令指针和堆栈发生了什么,如果发生了什么


谢谢

一个进程的线程都共享相同的地址空间,而不是相同的CPU寄存器。线程调度取决于编程语言和O/S。通常有明确的调度点,如从系统调用返回、阻塞等待I/O完成,或解释语言的p代码指令之间。一些O/S实现会根据线程为基于时间的调度运行的时间重新调度。通常,语言包含一个函数,该函数通过将控制转移到O/S的进程或线程调度器组件,显式地将CPU提供给任何其他线程或进程

从一个线程或进程切换到另一个线程或进程的行为称为上下文切换,并且是经过仔细调优的代码,因为这通常每秒执行数千次。这会使代码难以遵循

我见过的最好的解释是经典的。

在C中,任务计划在当前的
同步上下文上运行。上下文基本上有一个任务队列,它计划在与之关联的线程上运行,在GUI应用程序中只有一个线程,因此任务计划在那里运行


GUI线程不会被中断,但当它完成队列中它前面的所有其他任务时,它会执行任务。

这更像是一个特定于语言/工具包的问题,而不是特定于操作系统的问题。这个问题的上下文是什么?什么操作系统?这更像是一个c/obj c问题,或者更确切地说,是一个低级问题。C++也是如此。更多的是硬件/寄存器/指令指针问题。我意识到实现是特定于操作系统的,比如确切的时间,但我不知道在哪里可以找到“中断哪个函数”的一般概念,因为大多数应用程序都是连续循环的。“嘿,我要跑一圈,告诉我什么时候换鞋,但我不会停下来”,这种想法。。。我什么时候才能停止在圈子里跑来换鞋呢。(这可能已经得到了回答,只是回答了一些问题)我投票决定结束这篇文章,因为我可能已经忘记了这是特定于体系结构的,而且似乎没有人回答我说的是“同一个线程”,我将在体系结构方面更加具体,在线程队列方面更加通用,希望我至少能找到查找的地方。但我会读O软件人提到的unix章节,因为他可能指出了正确的方向。呃,我读得太快了。这个问题针对的是同一个线程,而不是线程切换。我得到了我相信的线程切换部分。。。请看我在原处的评论