险阻艰难
有时很想很想对方,想到几乎发疯,又很少能够告诉对方,这一种想爱却不能爱的感觉,或许就是爱之所以会让人寂寞的根本原因吧。
条件等待是线程间同步的一种手段,如果只有一个线程,条件不满足,一直等下去都不会满足,所以必须要有一个线程通过某些操作,改变共享变量,使原先不满足的条件变得满足,并且友好的通知等待在条件变量上的线程。 条件不会无缘无故的突然变得满足了,必然会牵扯到共享数据的变化。所以一定要用互斥锁来保护。没有互斥锁就无法安全的获取和修改
线程是进程内的一个执行流 我们知道在创建子进程时,只会创建子进程的进程控制块,父进程将自己资源的一部分直接给子进程,比如虚拟地址空间中的代码段和页表;现在有一个想法,就是类似创建子进程一样,给某一个进程创建多个进程控制块,同时指向同一个虚拟地址空间,共用一个页表 将进程的代码区分为多份,同时创建多个进程控制块指向同
①当上层应用app1调用recv系统调用时,如果对等方没有发送数据(缓冲区没有数据),上层应用app1将阻塞(默认行为,被linux内核阻塞); ②当对等方发送了数据,linux内核recv端缓冲区,有数据后,内核会把数据copy给用户空间。然后上层应用app1解除阻塞,执行下一步操作。①上层应用程序app2将套接字设
① 上层应用程序app4建立SIGIO信号处理程序。当缓冲区有数据到来,内核会发送信号告诉上层应用程序app4。 ②上层应用程序app4接收到信号后,调用recv函数,因缓冲区有数据,recv函数一般不会阻塞。 ③这种用于模型用的比较少,属于典型的“拉模式”。即:上层应用app4,需要调用recv函数把数据拉进来。①上
①物理层:主要定义物理设备标准,如网线的接口类型、光纤的接口类型、各种传输介质的传输速率等。它的主要作用是传输比特流(就是由1、0转化为电流强弱来进行传输,到达目的地后再转化为1、0,也就是我们常说的数模转换与模数转换)。这一层的数据叫做比特。 ②数据链路层:定义了如何让格式化数据以帧为单位进行传输,以及如何让控制对物
TCPIP网络协议栈分为应用层(Application)、传输层(Transport)、网络层(Network)和链路层(Link)四层。源目的端口号:表示数据是从哪个进程来,到哪个进程去; 32位序号32位确认号:后面详细讲; 4位TCP报头长度:表示该TCP头部有多少个32位bit(有多少个4字节);所以TC