基于libevent的多线程Server实现

本文分享了一次使用libevent库结合多线程技术进行网络编程的实践过程。作者最初尝试通过共享内存方式实现,随后转向多线程方案,并记录了测试代码的主要流程与关键函数,包括监听服务器初始化、客户端连接事件处理及任务分发等。

最近在学习libevent,写了一些测试的例子,最开始是用共享内存实现的,后来改成了多线程。而且很多细节没有考虑。先存下档,后面再改(不改了)

main.cpp

#include "stdafx.h"
#include<stdio.h>  
#include<string.h>  
#include<errno.h>  

#include<event.h>  
#include<event2/bufferevent.h>  
#include "ThreadPool.h"
#include "event2/thread.h"
#include "EventWork.h"
#include <vector>

void accept_cb(int fd, short events, void* arg);
int tcp_server_init(int port, int listen_num);
int THREAD_NUM = 10;
int g_count = 0;
int last_thread = 0;

EventWork* g_works;

int main(int argc, char** argv)
{
	//加载套接字库  
	WSADATA wsaData;
	int iRet = 0;
	iRet = WSAStartup(MAKEWORD(2, 2), &wsaData);
	if (iRet != 0)
	{
		return -1;
	}

	if (2 != LOBYTE(wsaData.wVersion) || 2 != HIBYTE(wsaData.wVersion))
	{
		WSACleanup();
		return -1;
	}

	int listener = tcp_server_init(9999, 10000000);
	if (listener == -1)
	{
		return -1;
	}
	evthread_use_windows_threads();
	g_works = new EventWork[T
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值