面试的时候,面试官竟然问了我这样一个问题:假如你在开发一个系统,你觉得怎么实现多线程?

默伊清风 2014-09-27 08:49:57
面试的时候,面试官竟然问了我这样一个问题:“假如你在开发一个系统,你觉得应该怎么实现多线程?”当时差点吓尿了……
...全文
1593 38 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
虽然对多线程的东西不太熟悉,但是被问到这么抽象的问题也确实非常无奈。既然这么抽象的问到了,那就抽象的回答他,从单线程的语言给他聊到多线程的语言,从单线程的优点给他聊到多线程的应用,知道聊到他怀疑人生为止,哈哈。不过我感觉问这么一个问题确实是很脑残,就跟问了一个“你是怎么来敲代码的”的问题一样。
默伊清风 2014-09-30
  • 打赏
  • 举报
回复
引用 33 楼 xiaoyuanyuan2009 的回复:
如果面试官的意思是让你设计一个操作系统,那你应该说说windows的套路。大概是这样: 每一个线程都有一个struct,其中的成员用来保存CPU的寄存器的数据。当一个线程在结束之前要把CPU中所有寄存器的信息保存到struct,然后放到内存。然后线程调度程序查看其它待执行线程的优先级,下一个线程到底执行谁要看两个方面,一个是看谁的优先级高,另一个是看哪个线程憋屈老半天都没能执行。综合判断之后就读取下一个进程的struct,用struct中的成员恢复到寄存器当中,然后就可以用EIP寄存器指向的地址继续执行了
学习了,谢谢了!
默伊清风 2014-09-29
  • 打赏
  • 举报
回复
引用 27 楼 MagicFuzzX 的回复:
好像我们当初操作系统原理课程设计就是这个。。
请给讲讲是怎么实现的?
谁学逆向工程 2014-09-29
  • 打赏
  • 举报
回复
如果面试官的意思是让你设计一个操作系统,那你应该说说windows的套路。大概是这样: 每一个线程都有一个struct,其中的成员用来保存CPU的寄存器的数据。当一个线程在结束之前要把CPU中所有寄存器的信息保存到struct,然后放到内存。然后线程调度程序查看其它待执行线程的优先级,下一个线程到底执行谁要看两个方面,一个是看谁的优先级高,另一个是看哪个线程憋屈老半天都没能执行。综合判断之后就读取下一个进程的struct,用struct中的成员恢复到寄存器当中,然后就可以用EIP寄存器指向的地址继续执行了
shiter 2014-09-29
  • 打赏
  • 举报
回复
难题 2014-09-29
  • 打赏
  • 举报
回复
瞬间高大上的感觉。。。。 看样子还有很多东西要学习啊 来看有大牛解释解释
mujiok2003 2014-09-29
  • 打赏
  • 举报
回复
1. 线程选型: 垂直模型, 水平模型 2. 任务切割: 按数据切割或按流程切割 3. 性能指标: 低延时或高吞吐量或公平性。。。。
六道对穿肠 2014-09-29
  • 打赏
  • 举报
回复
可能是要 管理多线程吧 自己管理多线程
sjjwind 2014-09-29
  • 打赏
  • 举报
回复
很欣赏chrome的线程模型,会在线程挂一个runloop,然后在runloop里面等待任务执行。然后把线程分为IO、FILE、DB、Network等线程,然后在主线程启动各个基本线程的runloop,然后主线程进入runloop,完成任务都是异步完成,比如主线程有一个文件读写的任务,就PostTask到FILE线程,通知可以用回调等。如果需要启动其他线程,就继承一个任务接口,然后启动就好了,这样,就能很好的管理多线程了。
星空之路 2014-09-29
  • 打赏
  • 举报
回复
这个是在进程的基础上开多线,操作系统也是把进程开起再开线,这个还要考虑线程同步线程通信等等,这些我们没能力是想
没拦住車 2014-09-29
  • 打赏
  • 举报
回复
可能是想让你说说 多线程需要注意的地方吧
默伊清风 2014-09-28
  • 打赏
  • 举报
回复
引用 11 楼 xihu1364 的回复:
怎么实现多线程...这是开发操作系统的节奏啊
确实,前提是自己开发一个系统
版主大哥 2014-09-28
  • 打赏
  • 举报
回复
如果是功能,应该是说怎么实现并发,如何使用多线程
版主大哥 2014-09-28
  • 打赏
  • 举报
回复
怎么实现多线程...这是开发操作系统的节奏啊
默伊清风 2014-09-28
  • 打赏
  • 举报
回复
引用 8 楼 daiweifeng 的回复:
说操作系统的多线程,不是很清晰,可能是指应用程序内的多线程如何实现? 如果是多进程、多任务主要是形成解决思路的方案: 比如要考虑内存冲突,设备占用冲突。硬件多核心时的调度等等,输入输出在多线程,负载平衡 如果是应用程序内的多线程,主要考虑的问题是内存冲突,还有负载平衡
学习了,好复杂呀!谢了!
默伊清风 2014-09-28
  • 打赏
  • 举报
回复
引用 7 楼 zhao4zhong1 的回复:
《30天自制操作系统》
学习了,谢谢赵老师!
超级能量泡泡 2014-09-28
  • 打赏
  • 举报
回复
说操作系统的多线程,不是很清晰,可能是指应用程序内的多线程如何实现? 如果是多进程、多任务主要是形成解决思路的方案: 比如要考虑内存冲突,设备占用冲突。硬件多核心时的调度等等,输入输出在多线程,负载平衡 如果是应用程序内的多线程,主要考虑的问题是内存冲突,还有负载平衡
赵4老师 2014-09-28
  • 打赏
  • 举报
回复
《30天自制操作系统》
灌水号 2014-09-28
  • 打赏
  • 举报
回复
根据需求设计相应的线程,优先级,线程之间的通信。
MagicFuzzX 2014-09-28
  • 打赏
  • 举报
回复
好像我们当初操作系统原理课程设计就是这个。。
加载更多回复(18)

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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