- 主题:用createThread()创造出来的多线程是怎么被编译的
一个简单的正常的C程序是一句一句把程序从头到尾执行的。
但是一个多线程的C程序当中可以建立许多个线程,这些线程
是怎么被编译器编译的,难道编译器会自动把这几个线程识别
出来然后一起放到while循环里吗?编译器自己在C程序里插入
个while循环吗?
--
FROM 120.6.44.*
那么运行时的意思就是说,createThread()就是像DLL动态链接那样,运行的时候在DLL库中去找这个createThread()函数,然后把传递给createThread()的作为参数的函数地址发送到while循环中去执行?
【 在 z16166 的大作中提到: 】
: createThread()是运行时,不是编译时。
--
FROM 120.6.44.*
把每个线程需要对应的函数地址填入中断描述符表idt,然后就等着OS去调度,那么又如何做到一旦主线程结束退出,
紧接着在程序里被创建的线程们也被强迫马上退出,即使被创建的线程还没有计算完毕,这又是怎么做到的?
【 在 ylh0315 的大作中提到: 】
: 没明白跟while有啥关系。
: 该函数是创建一个新的context,继承父线程的资源,分配一个栈,其ip(指令指针)指向你给出的函数地址。加入任务队列,等着OS去调度。
: 就完事啦!
--
FROM 120.6.44.*