|
|
1
4
指望线程何时启动或不启动通常是一种编程错误。是的,从技术上讲,一个线程在你创建它的时候就会启动。但这并不意味着它立即开始运行。操作系统调度程序可以在那里执行任意数量的操作。 正如您可能已经意识到的那样,您试图诱使调度程序在睡眠中做您想做的事情,但这甚至不能保证工作。 如果需要线程彼此同步执行,则需要显式执行。你的睡眠并不重要,它只是一个祈祷,希望事情按你想要的方式发展。
同步原语,如
例如,在Linux中,创建
因此,如果在一个线程中执行的指令序列中创建多个线程,那么描述这些新线程的内核数据结构将按照程序中出现的执行顺序创建。但这并不意味着他们的任何指令都可以运行。创建这四个线程的指令可能以连续不间断的顺序运行,然后内核决定挂起原始线程并执行第四个线程,但只有5条CPU指令值,然后是第1条,然后是第3条。内核可能会立即调度您在单独的内核上创建的第一个线程,因此它的指令会在创建下一个线程的内核数据结构的同时执行。
|
|
AstralHex · 矩阵乘法代码工作不正常 1 年前 |
|
|
Fishie · 作为类成员的智能指针是否仍然自动释放?[关闭] 1 年前 |
|
|
Die4Toast · 递归调用成员箭头运算符-> 1 年前 |
|
|
Anka Hanım · 关于结构和动态数组地址的问题 1 年前 |