午夜稻草人

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

2013年4月30日

摘要: 使用了fork、select、epoll三种socket服务器工作模式,客户端向服务端发送任何数据,服务端再原样返回给客户端,本文的目的只为加深偶的记忆。fork:每accept到一个socket之后,开启一个子进程来负责收发处理工作。select:监控文件描述符事件epoll:监控文件描述符事件,比select性能优异,可最大支持2W个连接,有死连接时处理能力高文末附注了SOCKET的一些常见错误标识--------------------------fork.cpp--------------------------#include <sys/types.h>#include 阅读全文
posted @ 2013-04-30 17:37 午夜稻草人 阅读(1972) 评论(0) 推荐(0) 编辑

摘要: (一)Linux网络编程--网络知识介绍Linux网络编程--网络知识介绍客户端和服务端 网络程序和普通的程序有一个最大的区别是网络程序是由两个部分组成的--客户端和服务器端.客户端 在网络程序中,如果一个程序主动和外面的程序通信,那么我们把这个程序称为客户端程序。 比如我们使用ftp程序从另外一 个地方获取文件的时候,是我们的ftp程序主动同外面进行通信(获取文件), 所以这个地方我们的ftp程序就是客户端程序。服务端 和客户端相对应的程序即为服务端程序。被动的等待外面的程序来和自己通讯的程序称为服务端程序。 比如上面的文件获取中,另外一个地方的程序就是服务端,我们从服务端获取文件过来。互为 阅读全文
posted @ 2013-04-30 14:55 午夜稻草人 阅读(236) 评论(0) 推荐(0) 编辑

摘要: 条件变量1.初始化条件变量pthread_cond_init#include <pthread.h>int pthread_cond_init(pthread_cond_t *cv,const pthread_condattr_t *cattr);返回值:函数成功返回0;任何其他返回值都表示错误初始化一个条件变量。当参数cattr为空指针时,函数创建的是一个缺省的条件变量。否则条件变量的属性将由cattr中的属性值来决定。调用 pthread_cond_init函数时,参数cattr为空指针等价于cattr中的属性为缺省属性,只是前者不需要cattr所占用的内存开销。这个函数返回时 阅读全文
posted @ 2013-04-30 14:14 午夜稻草人 阅读(217) 评论(0) 推荐(0) 编辑

摘要: 线程同步与互斥 线程共享进程的资源和地址空间,对这些资源进行操作时,必须考虑线程间同步与互斥问题 三种线程同步机制 •互斥锁 •信号量 •条件变量 互斥锁更适合同时可用的资源是惟一的情况 信号量更适合同时可用的资源为多个的情况互斥锁 用简单的加锁方法控制对共享资源的原子操作 只有两种状态: 上锁、解锁可把互斥锁看作某种意义上的全局变量 在同一时刻只能有一个线程掌握某个互斥锁,拥有上锁状态的线程能够对共享资源进行操作 若其他线程希望上锁一个已经被上锁的互斥锁,则该线程就会挂起,直到上锁的线程释放掉互斥锁为止互斥锁保证让每个线程对共享资源按顺序进行原子操作互斥锁分... 阅读全文
posted @ 2013-04-30 14:09 午夜稻草人 阅读(209) 评论(0) 推荐(0) 编辑

摘要: 线程编程 操作用户空间中的线程创建线程 •调用该线程函数的入口点 •使用函数pthread_create(),线程创建后,就开始运行相关的线程函数#include <stdio.h> #include <stdlib.h> #include <pthread.h> void *thrd_func(void *arg); pthread_t tid; int main(){ // 创建线程tid,且线程函数由thrd_func指向,是thrd_func的入口点,即马上执行此线程函数 if (pthread_create(&tid,NULL,thrd_f 阅读全文
posted @ 2013-04-30 14:01 午夜稻草人 阅读(262) 评论(0) 推荐(0) 编辑

摘要: 进程与线程进程是程序执行时的一个实例,即它是程序已经执行到何种程度的数据结构的汇集。从内核的观点看,进程的目的就是担当分配系统资源(CPU时间、内存等)的基本单位。线程是进程的一个执行流,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。一个进程由几个线程组成(拥有很多相对独立的执行流的用户程序共享应用程序的大部分数据结构),线程与同属一个进程的其他的线程共享进程所拥有的全部资源。进程——资源分配的最小单位,线程——程序执行的最小单位进程有独立的地址空间,一个进程崩溃后,在保护模式下不会对其它进程产生影响,而线程只是一个进程中的不同执行路径。线程有自己的堆栈和局部变量,但线程 阅读全文
posted @ 2013-04-30 13:52 午夜稻草人 阅读(206) 评论(0) 推荐(0) 编辑

摘要: 进程同步:一组并发的进程按照一定的顺序执行的过程称为进程间的同步。获取ID:#include<unistd.h>pid_tgetpid(void)//获取本进程IDpid_tgetppid(void)//在子进程中获取父进程ID进程创建:#include<unistd.h>pid_t fork(void)fork()的奇妙之处在于它被调用一次,却返回两次,它可能有三种不同的返回值:1.在父进程中,返回新创建的子进程的PID2.在子进程中,返回03.如果出现错误,返回一个负值。例子:#include <stdlib.h>#include <stdio.h 阅读全文
posted @ 2013-04-30 11:53 午夜稻草人 阅读(363) 评论(0) 推荐(0) 编辑

摘要: 假定你有一个标准STL容器,c,容纳int,1 Container c;而你想把c中所有值为1963的对象都去掉。令人吃惊的是,完成这项任务的方法因不同的容器类型而不同:没有一种方法是通用的。如果你有一个连续内存容器(vector、deque或string),最好的方法是erase-remove惯用... 阅读全文
posted @ 2013-04-30 09:57 午夜稻草人 阅读(689) 评论(0) 推荐(0) 编辑