San*_*aju 14 c++ multithreading callstack function-pointers callback
我有一个关于线程和回调的一般问题.比方说,我们有一个线程与主程序一起连续运行.
主程序已经在线程中注册了回调函数.所以线程可以随时调用回调函数.通常,我们通过将函数指针传递给线程来注册回调.我想知道线程调用该回调函数的时间,它是该线程的一部分,还是它将成为主程序的一部分.我想知道这个过程的机制,比如当线程调用回调时主程序执行是如何停止或中断的.另一件事是在调用回调时函数调用堆栈将如何表现.
Mar*_*tos 12
作为一般规则,函数调用始终在调用者的上下文(线程)中进行.无论被调用者是函数,成员函数,仿函数对象还是其他任何东西都无关紧要.
换句话说,当线程调用您的回调时,调用发生在线程中.主线程未停止以执行回调.事实上,它不会以任何方式涉及回调的执行.
各种框架提供了一些技巧,使它看起来好像一个线程可以直接调用另一个线程,但这总是通过某种编组的消息传递机制以合作的方式完成.线程通常不会互相旋转.