进程在进入入口点以前(即全局变量初始化时),是否保证是单线程的

GKatHere 2017-04-05 10:16:04
如题:进程在进入入口点以前(即全局变量初始化时),是否保证是单线程的

好吧,题目已经很明白了,没什么好补充的。
...全文
458 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
encoderlee 2017-04-08
  • 打赏
  • 举报
回复
没有这种规定。
你不会在构造函数中创建线程,但是无法保证你的程序引用的各种第三方库不会这样做。
如果排除你自己程序代码(包括第三方库)创建的线程,操作系统在创建一个进程时后,直到执行到main()时都是单线程的。
赵4老师 2017-04-07
  • 打赏
  • 举报
回复
没有标准强制规定c++的全局变量的动态初始化过程必须是单线程的。据我所知。
GKatHere 2017-04-07
  • 打赏
  • 举报
回复
引用 1 楼 schlafenhamster 的回复:
不能保证“是单线程的” !
引用 4 楼 zhao4zhong1 的回复:
《Windows核心编程》
引用 6 楼 Saleayas 的回复:
在入口的时候,确实是一个进程一个线程; 但是在进入入口之后,就可能会创建多个线程。 等进入到 C/C++ 入口时候,就不能保证了。
引用 5 楼 CharlesSimonyi 的回复:
当然无法保证,例如你在全局变量的构造函数里创建一个线程,不就在执行main()函数前就已经有多个线程在执行了。
对于windows, unix, linux, 红旗 这些系统来说,面对dll文件(或类似dll)这样的可执行文件, 有没有强制标准说明,在进入dll入口点前的全局变量的动态初始化阶段(或类似的这个阶段), 必须是单线程程的? 即:c++的全局变量的动态初始化过程, "常常是单线程的",但是否有标准强制规定是单线程的? PS:动态初始化函数本身创建的线程不考虑
Saleayas 2017-04-06
  • 打赏
  • 举报
回复
在入口的时候,确实是一个进程一个线程; 但是在进入入口之后,就可能会创建多个线程。 等进入到 C/C++ 入口时候,就不能保证了。
encoderlee 2017-04-06
  • 打赏
  • 举报
回复
当然无法保证,例如你在全局变量的构造函数里创建一个线程,不就在执行main()函数前就已经有多个线程在执行了。
赵4老师 2017-04-05
  • 打赏
  • 举报
回复
《Windows核心编程》
赵4老师 2017-04-05
  • 打赏
  • 举报
回复
不要迷信书、考题、老师、回帖; 要迷信CPU、编译器、调试器、运行结果。 并请结合“盲人摸太阳”和“驾船出海时一定只带一个指南针。”加以理解。 任何理论、权威、传说、真理、标准、解释、想象、知识……都比不上摆在眼前的事实!
sevancheng 2017-04-05
  • 打赏
  • 举报
回复
在构造函数写线程测试下就知道了
schlafenhamster 2017-04-05
  • 打赏
  • 举报
回复
不能保证“是单线程的” !

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧