1
4
指望线程何时启动或不启动通常是一种编程错误。是的,从技术上讲,一个线程在你创建它的时候就会启动。但这并不意味着它立即开始运行。操作系统调度程序可以在那里执行任意数量的操作。 正如您可能已经意识到的那样,您试图诱使调度程序在睡眠中做您想做的事情,但这甚至不能保证工作。 如果需要线程彼此同步执行,则需要显式执行。你的睡眠并不重要,它只是一个祈祷,希望事情按你想要的方式发展。
同步原语,如
例如,在Linux中,创建
因此,如果在一个线程中执行的指令序列中创建多个线程,那么描述这些新线程的内核数据结构将按照程序中出现的执行顺序创建。但这并不意味着他们的任何指令都可以运行。创建这四个线程的指令可能以连续不间断的顺序运行,然后内核决定挂起原始线程并执行第四个线程,但只有5条CPU指令值,然后是第1条,然后是第3条。内核可能会立即调度您在单独的内核上创建的第一个线程,因此它的指令会在创建下一个线程的内核数据结构的同时执行。
|
rookie · 检查函数模板的所有参数包参数是否属于int 1 年前 |
ivaigult · -W转换和隐式字符串到布尔类型转换 1 年前 |
rainer · 后台插入程序的初始化 1 年前 |
Community wiki · 以理智、安全和高效的方式复制文件 1 年前 |
Shefali Kanaujia · 对C中向量的向量进行排序++ 1 年前 |
Ma Joonyoung · 粗粒度和细粒度链表的时间比较 1 年前 |