线程是一个进程的里面的一个执行上下文(执行序列),一个进程可以同时拥有多个执行序列。
我的问题是:线程应该只是宏观上的概念吧?实际计算机执行的话,还是有先后的(单核),所以有了线程管理的问题,那么线程是怎么调度的呢(先不说同步的问题),是一个线程阻塞了(一直有点不明白阻塞的意思,是进行io的时候,外设比较慢,CPU一直在等待的意思么?),另一个优先级高的线程才可以运行?还是有时间片轮转什么的?应该是两者结合吧?多线程的编译是不是和单线程的不一样?
我的问题是:线程应该只是宏观上的概念吧?实际计算机执行的话,还是有先后的(单核),所以有了线程管理的问题,那么线程是怎么调度的呢(先不说同步的问题),是一个线程阻塞了(一直有点不明白阻塞的意思,是进行io的时候,外设比较慢,CPU一直在等待的意思么?),另一个优先级高的线程才可以运行?还是有时间片轮转什么的?应该是两者结合吧?多线程的编译是不是和单线程的不一样?
解决方案 »
- 关于MFC中Tree控件句柄的问题
- VC 进度条 颜色问题
- 我在MPSend里 修改了tcp的数据段的长度,可以发包出去,但后面的包SEQ/ACK有问题。
- USB摄像头实时视频捕获时如何加上时间和文字说明?vc实现
- LoadLibray 就应该受歧视吗?
- 求:《深入解析MFC》一书的电子版,中英文皆可。
- WinXP系统中如何取得所有的用户名呀??
- 大家来看看<<WINDOWS程序设计>>中文第五版的低级错误,有分
- 怎样在VC下用ADO连接ORACLE数据库?
- 一个问题!!用不了多久,请回答我吧!!
- 整型数组不能用 memset()函数初始化么?
- 100分求!!!SetParent指定父窗体后,子窗体上的空间不显示。
---------------
应该是CPU等待外设完成IO操作。线程的调度是有操作系统的内核完成的。线程是有优先级之分,但不表示高优先级总是运行,而低优先级的总是等待,得不到CPU
===========
链接库是分多线程库和单线程版的。
你可以去看operating system concepts
http://os-book.com/
(信号量实现的睡觉与叫醒)睡觉的那个down应该是个判断循环吧?判断发现还是应该睡觉,然后又继续睡?
写多线程要先写同步,再写互斥?
两个线程,一个线程获得锁后阻塞,另一个线程要获得锁,循环等待
阻塞的那个线程可能是进行IO操作阻塞,所以io完了之后就会变为就绪,所以不会变为死锁吧
死锁是不是也分:进程内的(线程间),进程之间(系统)?
额,还有,那个驱动 是不是我们预先写好的一系列代码,这些每个代码段 都能完成相应的几部硬件操作(或者响应一种中断,动作?)
不是,要看连接器和操作系统,windows中规定小于65536的虚拟地址不能用不是
cpu在io开始时挂起线程,在io完成后恢复线程
操作系统可以为每个对象维护一个等待链表,每当一个线程等待这个对象时,把线程加入到这个对象的等待链表中
如果对象signal,从这个对象的等待链表中拿出一些线程放到就绪队列