专栏名称: 奥斯特洛司机
朝闻道,夕死矣。为中产而奋斗的小编
目录
相关文章推荐
康石石  ·  布朗大学硕士扩招!设计双学位走起~ ·  昨天  
康石石  ·  ONE作品集ONE董老师,帮我拿下皇艺! ·  昨天  
哔哩哔哩  ·  中国消失了73年的省,被UP主挖出来了 ·  2 天前  
哔哩哔哩  ·  哔哩哔哩公众号招聘实习生 ·  2 天前  
51好读  ›  专栏  ›  奥斯特洛司机

6.5、发数据、信号量、并发、多线程综合实战

奥斯特洛司机  · 简书  ·  · 2019-04-15 16:34

正文

1、发送数据指导思想
把要发送的数据放到一个队列中,专门创建一个线程来统一负责发送数据。
程序写法千万条,效率稳定第一条。

2、发送数据代码实战
2.1、信号量
sem_post():能够将指定信号量值加1,即便当前没有其它线程在等待该信号量值。
sem_t
线程之间的同步机制。
互斥量,在一个进程的多个线程之间同步。
信号量可以提供进程之间的同步。也可以提供线程之间的同步。
《Unix网络编程 卷2》有讲述。
用之前调用sem_init初始化一下。
用完后用sem_destroy释放信号量。
sem_wait():用来测试指定信号量的值。如果该值大于0,将该值减1然后立即返回。如果该值等于0,那么该线程将投入睡眠中。一直到该值大于0,循环往复。
2.2、数据发送线程
线程函数使用静态成员函数?
2.3、可写通知到达后数据的继续发送
写处理函数,epoll_wait之后调用。
比较重要的函数,需要吃透。
2.4、发送数据的简单测试
如何把发送缓冲区撑满?
观察现象:一次发送65k的数据。发送到第20次,服务端的发送缓冲区才满。







请到「今天看啥」查看全文