linux网络编程
文章平均质量分 79
学习TCP/IP协议与unix网络编程,自己的笔记!
一直在路上25
热爱技术,坚持才是硬道理
展开
-
一个线程池的简单的实现
线程池实现:用于执行大量相对短暂的任务当任务增加的时候能够动态的增加线程池中线程的数量直到达到一个阈值。当任务执行完毕的时候,能够动态的销毁线程池中的线程该线程池的实现本质上也是生产者与消费模型的应用。生产者线程向任务队列中添加任务,一旦队列有任务到来,如果有等待线程就唤醒来执行任务,如果没有等待线程并且线程数没有达到阈值,就创建新线程来执行任务。原创 2014-05-28 16:54:16 · 1169 阅读 · 0 评论 -
POSIX条件变量
当一个线程互斥地访问某个变量时,它可能发现在其它线程改变状态之前,它什么也做不了。例如一个线程访问队列时,发现队列为空,它只能等待,只到其它线程将一个节点添加到队列中。这种情况就需要用到条件变量。原创 2014-05-27 22:31:22 · 781 阅读 · 0 评论 -
POSIX信号量与互斥锁
POSIX信号量相关函数:sem_opensem_closesem_unlinksem_initsem_destroysem_waitsem_postPOSIX互斥锁pthread_mutex_initpthreaad_mutex_lockpthread_mutex_unlockpthread_mutex_原创 2014-05-27 20:46:11 · 888 阅读 · 0 评论 -
POSIX线程(2)
线程属性初始化与销毁属性int pthread_attr_init(pthread_attr_t *attr);int pthread_attr_destroy(pthread_attr_t *attr);获取与设置分离属性int pthread_attr_getdetachstate(const pthread_attr_t *attr, int *detachsta原创 2014-05-23 08:46:31 · 861 阅读 · 0 评论 -
POSIX线程(1)
POSIX线程库:与线程有关的函数构成了一个完整的系列,绝大多数函数的名字都是以“pthread_”打头的要使用这些函数库,要通过引入头文链接这些线程函数库时要使用编译器命令的“-lpthread”选项pthread_create函数功能:创建一个新的线程原型int pthread_create(pthread_t *thread, cons原创 2014-05-21 19:54:17 · 1024 阅读 · 0 评论 -
线程基础知识
什么是线程:原创 2014-05-21 13:02:54 · 833 阅读 · 0 评论 -
POSIX 共享内存
POSIX共享内存相关函数:shm_open函数功能:用来创建或打开一个共享内存对象原型int shm_open(const char *name, int oflag, mode_t mode); 参数name:共享内存对象的名字oflag:与open函数类似,可以是O_RDONLY、O_RDWR,还可以按位或上O_CREAT、O_EXCL、O_T原创 2014-05-20 18:53:42 · 987 阅读 · 0 评论 -
POSIX 消息队列
POSIX消息队列相关函数:mq_open函数功能:用来创建和访问一个消息队列原型mqd_t mq_open(const char *name, int oflag);mqd_t mq_open(const char *name, int oflag, mode_t mode, struct mq_attr *attr);参数name: 某个消息队列原创 2014-05-20 18:53:29 · 1036 阅读 · 0 评论 -
用信号量解决生产者消费者问题
用信号量解决生产者消费者问题:ipc.h#ifndef _IPC_H_#define _IPC_H_#include #include #include #include #include #include #include #include #include #define ERR_EXIT(m) \ do \原创 2014-05-19 19:22:42 · 2925 阅读 · 0 评论 -
System V信号量(3)
用System V信号量解决哲学家就餐问题:#include #include #include #include #include #include #include #include #include #include #include #include #include union semun {int原创 2014-05-19 14:52:44 · 920 阅读 · 0 评论 -
UDP聊天室
实现的一个UDP聊天室原创 2014-05-15 16:17:16 · 1196 阅读 · 2 评论 -
UNIX域协议
echocli.c#include #include #include #include #include #include #include #include #define ERR_EXIT(m) \ do \ { \ perror(m); \ exi原创 2014-05-15 16:20:19 · 944 阅读 · 0 评论 -
UNIX进程之间传递文件描述符recvmsg与sendmsg
sendfd.c#include #include #include #include #include #include #include #include #include #define ERR_EXIT(m) \ do \ { \ perror(m); \原创 2014-05-15 22:12:35 · 1418 阅读 · 0 评论 -
进程间通信的介绍
顺序程序特征顺序性q封闭性:(运行环境的封闭性)q确定性q可再现性q并发程序特征q共享性q并发性q随机性原创 2014-05-17 09:05:14 · 678 阅读 · 0 评论 -
System V消息队列(2)
msgsnd函数原创 2014-05-18 09:58:54 · 706 阅读 · 0 评论 -
System V的消息队列(1)
消息队列:消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法每个数据块都被认为是有一个类型,接收者进程接收的数据块可以有不同的类型值消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMNB),系统上消息队列的总数也有一个上限(MSGMNI)原创 2014-05-18 09:30:33 · 791 阅读 · 0 评论 -
UDP编程
套接口具有两个属性:本地地址 get远程地址原创 2014-05-15 09:56:48 · 769 阅读 · 0 评论 -
select在并发中的两点限制与poll函数的使用
用select实现的并发服务器,能达到的并发数,受两方面限制一个进程能打开的最大文件描述符限制。这可以通过调整内核参数。select中的fd_set集合容量的限制(FD_SETSIZE) ,这需要重新编译内核。原创 2014-05-13 19:44:08 · 1239 阅读 · 0 评论 -
用select单个进程处理并发服务器
int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);void FD_CLR(int fd, fd_set *set);int FD_ISSET(int fd, fd_set *set);void FD_SET(int fd, fd原创 2014-05-12 09:00:16 · 1083 阅读 · 0 评论 -
socket编程基础3
服务器端尽可能使用RUSEADDR。在绑定之前尽可能调用setsockopt原创 2014-05-10 18:25:03 · 893 阅读 · 0 评论 -
socket编程基础2
包含头文件功能:创建一个套接字用于通信原型int socket(int domain, int type, int protocol);参数qdomain :指定通信协议族(protocol family)qtype:指定socket类型,流式套接字SOCK_STREAM,数据报套接字SOCK_DGRAM,原始套接字SOCK_RAWqprotocol :协议类型q返原创 2014-05-10 17:42:11 · 719 阅读 · 0 评论 -
socket编程基础1
socket可以看成是用户进程与内核网络协议栈的原创 2014-05-10 09:26:21 · 729 阅读 · 0 评论 -
TCP/IP基础
MTU最大传输单元,以太网和IEEE802.3对数据帧的长度都有限制,其原创 2014-05-09 08:39:27 · 1114 阅读 · 0 评论