unix网络编程(unix network programming)

本文详细探讨了Unix网络编程的经典之作,重点学习了网络编程的基础知识及进程间通信(IPC)的实现方法,包括使用信号量、互斥锁、条件变量等同步机制。同时,总结了如何在不同场景下选择合适的通信方式,如FIFO、管道、共享内存等,并深入理解了内存映射和POSIX共享内存的实现细节。
摘要由CSDN通过智能技术生成

unix网络编程(unix network programming), 作者W.Richard Stevens, 这本书写的真是好,不愧为网络学习两部巨著中的一部。

第一部学习:
写的很细,真的很细,看别人写的网络编程的书籍,真的好多东西没有解释清楚,弄的乱乱的,看这本书,真觉得如沐春风,什么都讲得那么详细,而且连为什么这么做也讲得很好,看来看书要看经典,否则越看越糊涂!
谨记谨记!
先草草看一遍,用到网络编程的时候,一定回来好好读这本书
 2012.5.7
找到了unix网络编程第一卷第三版,原来看的是第二版的,这个版删掉了一些过时的东西,增加了sctp, 写的真的很好,现在用不到,将来再细读吧!
2012.5.12


第二部学习:
开始读unix网络编程第二卷第二版IPC, 这个在linux程序编写的时候很用到
2012.5.12
pipes have no names, and their biggest disadvantage is that they can be used only between processes that have a parent process in common
2012.5.19
如果要等待某个事件的发生,不用使用while()这样浪费时间的东东,可以使用mutex and Condition variables
read-write lock可以让读和写区别对待,这样就可以使获得read lock的锁继续read lock !
record locking,进程间同步.
2012.5.27
第十章开始,主要讲进程间通信
semaphore与mutex的不同是:1,semaphore可以设置值为N 2, mutex仅能为锁定它的线程解锁,而semaphores却可以被别的线程V操作
异步操作:例如,两个不相干的线程可以完全的异步
同步操作: 为了解决多个线程竞争某些资源而提出的解决方案。
一般情况下,mutex和condition variables用于线程同步,而semaphore用于进程同步。
semaphore分为named semaphore and memory-based semaphore( unnamed semaphore)
2012.6.2
12章shared Memory
Once the memory is mapped into the address space of the processes that are sharing the memory region, no kernel involvement occurs in passing data between the processes. What we means 'no kernel involvement' is that the processes do not execute any system calls into the kernel to pass the data.
进程同步的方法:Mutexes, condition variable, Read-Write Locking,semaphores
Normally,进程A与进程B通过FIFO,Pipe,和Queue通信,需要四次数据拷贝: 数据拷贝到kernel, 再拷贝到process A,再次进入kernel,最后传递给进程B.
进程通信,也就是传递消息的方法有:FiFO, Queue, Shared Memory,
2012.6.5
shared memory,父进程和子进程都拥有一套程序,但是mapped memory返回的指针指向了同一块内存。
posix shared memory扩展了内容,给出了不想关的进程之间shared memory implement.
posix shared memory 有两种机制:1. Memory-mapped files 2,shared memory objects
第15章与第16章
Doors are only Solaris features
16章中,introduction->history中写到,Sun RPC用于socket api来实现的,所以远程进程通信就用Socket就好了
2012.6.6
经过一个月IPC终于读完了,最重要的是明白了什么是同步,什么是进程通信,哈哈,大概看了看,用到时再仔细用
但是,我想如果编写c++代码,也使用c的进程通信吗? 例如QT中,是不是封装了进程通信的部分?
2012.6.6
如果需要在进程间传递数据,就要使用message, 而如果要同步多个进程则使用semaphore,同步多个线程则使用mutex !!!
2013.10.8
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值