聚宝小猪

博客园 首页 新随笔 联系 订阅 管理

2015年10月9日 #

摘要: inux中进程和线程的开销基本一样啊,为什么还要多线程呢?修改多进程优点:不互相影响,有利于水平参差不齐的程序员合作。多线程优点:创建速度快,数据共享(进程间数据共享麻烦)历史原因:以前操作系统没有native线程,后来cpu还特地增加了线程寄存器,才使得线程的切换速度能很快。修改sukihiro,... 阅读全文
posted @ 2015-10-09 07:24 聚宝小猪 阅读(840) 评论(0) 推荐(0) 编辑

摘要: Linux系统中的进程间通信方式主要以下几种:同一主机上的进程通信方式* UNIX进程间通信方式: 包括管道(PIPE), 有名管道(FIFO), 和信号(Signal)* System V进程通信方式:包括信号量(Semaphore), 消息队列(Message Queue), 和共享内存(Sha... 阅读全文
posted @ 2015-10-09 07:20 聚宝小猪 阅读(265) 评论(0) 推荐(0) 编辑

摘要: 1、线程间的通信方式使用全局变量主要由于多个线程可能更改全局变量,因此全局变量最好声明为violate使用消息实现通信在Windows程序设计中,每一个线程都可以拥有自己的消息队列(UI线程默认自带消息队列和消息循环,工作线程需要手动实现消息循环),因此可以采用消息进行线程间通信sendMessag... 阅读全文
posted @ 2015-10-09 07:19 聚宝小猪 阅读(139) 评论(0) 推荐(0) 编辑

摘要: 进程间的通信方式:(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。 (2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信。命名管道在文件系统中有对应... 阅读全文
posted @ 2015-10-09 07:13 聚宝小猪 阅读(55) 评论(0) 推荐(0) 编辑

摘要: 进程和线程都是由操作系统所体会的程序运行的基本单元,系统利用该基本单元实现系统对应用的并发性。进程和线程的区别在于:简而言之,一个程序至少有一个进程,一个进程至少有一个线程.线程的划分尺度小于进程,使得多线程程序的并发性高。另外,进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高... 阅读全文
posted @ 2015-10-09 07:09 聚宝小猪 阅读(59) 评论(0) 推荐(0) 编辑

2015年10月8日 #

摘要: 服务程序最为关键的设计是并发服务模型,当前有以下几种典型的模型:- 单进程服务,使用非阻塞IO使用一个进程服务多个客户,通常与客户通信的套接字设置为非阻塞的,阻塞只发生在select()、poll()、epoll_wait()等系统调用上面。这是一种行之有效的单进程状态机式服务方式,已被广泛采用。缺... 阅读全文
posted @ 2015-10-08 23:00 聚宝小猪 阅读(113) 评论(0) 推荐(0) 编辑

摘要: Linux系统网络服务器模型主要有两种:并发服务器和循环服务器。 所谓并发服务器就是在同一个时刻可以处理来自多个客户端的请求;循环服务器是指服务器在同一时刻指可以响应一个客户端的请求。而且对于TCP和UDP套接字,这两种服务器的实现方式也有不同的特点。 1、TCP循环服务器: 首先TCP服... 阅读全文
posted @ 2015-10-08 22:59 聚宝小猪 阅读(88) 评论(0) 推荐(0) 编辑

摘要: 1. 常用服务器模型a.迭代服务器:只有一个进程/线程处理请求。一般为单进程,加上select多路复用,非阻塞socket。b.迭代/并发混合型服务器:平时迭代处理,对消耗大的请求并发处理。处理请求时设置一个超时,当请求的处理时间超时时,创建一个进程/线程,把处理转给新的进程/线程处理,主进程/线程... 阅读全文
posted @ 2015-10-08 22:58 聚宝小猪 阅读(67) 评论(0) 推荐(0) 编辑

摘要: 本文通过一个简单的例子,介绍网络服务器编程模型服务器接受客户端连接请求,回显客户端发过来的数据,发送当前时间给客户端所有源码可打包下载:http://download.csdn.net/detail/yfkiss/4318990客户端请求相关代码:[cpp]view plaincopy//和服务器建... 阅读全文
posted @ 2015-10-08 22:56 聚宝小猪 阅读(105) 评论(0) 推荐(0) 编辑

摘要: 1.同步阻塞迭代模型同步阻塞迭代模型是最简单的一种IO模型。其核心代码如下:bind(srvfd);listen(srvfd);for(;;){clifd=accept(srvfd,...);//开始接受客户端来的连接read(clifd,buf,...);//从客户端读取数据dosomthingo... 阅读全文
posted @ 2015-10-08 22:52 聚宝小猪 阅读(179) 评论(0) 推荐(0) 编辑