当前位置:网站首页>libevent与多线程
libevent与多线程
2022-07-24 05:16:00 【lifei_0001】
首先在进程中,libevent的一个base实际上就是一个while循环,当系统内核捕捉到事件发生时,它就会按照事件的优先级将这些捕捉到的事件,用注册时的回调函数处理。怎样和多线程一起用呢?我认为有两个解决方案。
一、将监听accept和连接connect注册到一个base上,当有事件触发时,开新的线程处理接受到的数据。
二、使用1+N个线程,每个线程一个base。
1个监听线程,他只负责监听连接。有新的客户端连接进来时,将连接的socket交个某个线程处理。这里可以采用轮询策略。
N个处理客户端业务的线程,每个线程只负责自己的客户端时间。线程间互不干扰。每个线程都应该有一对管道,业务线程监听读时间,监听线程则在有新的客户端连接时,将socket写到某个业务线程的队列里,并向该线程的管道写操作,以触发该线程的管道多事件,进而线程知道有个新的客户端需要自己服务,从队列里取出socket,并监听读事件。
边栏推荐
猜你喜欢
随机推荐
酒店IPTV数字电视系统解决方案
使用d2l包和相关环境配置的一些血泪心得
Problems encountered in configuring Yum source
T 6-10
Tips for using the built-in variable props of BeanShell
Learning some contents of vector and iterator
Pointer learning diary (V) classic abstract data types and standard function libraries
Read the summary of "machine learning - Zhou Zhihua"
1、基于增量式生成遮挡与对抗抑制的行人再识别
FTP file transfer protocol
Pointer learning diary (IV) use structure and pointer (linked list)
PPPoE gateway simulation environment setup
thread
reflex
Echo speaker pairing and operation method
Detailed explanation of string constant pool and intern() of string
一步一步带你学C(其二)
JMeter upload and download files
C语言实现三子棋?五子棋?不,是n子棋
C语言进阶篇 五.动态内存管理









