raknet的线程模型。

本文通过gdb调试RakNet程序,揭示了其内部创建的两个辅助线程的功能。主线程之外,一个线程负责接收数据并放入队列,另一个线程则处理这些数据。随着监听端口数量的增加,线程数量也会相应增加。后续文章将深入探讨第二个线程的具体实现。
摘要由CSDN通过智能技术生成

gdb运行一个最简单的raknet程序,断点以后,敲入 info threads,可以看到有三个线程在跑


除了线程1的主线程外,还有其他两个线程,干什么的呢?由于只调用了一个startup函数,进入startup函数发现如下代码

#if !defined(__native_client__) && !defined(WINDOWS_STORE_RT)
	for (i=0; i<socketDescriptorCount; i++)
	{
		if (socketList[i]->IsBerkleySocket())
			((RNS2_Berkley*) socketList[i])->CreateRecvPollingThread(threadPriority);
	}
#endif

	errorCode = RakNet::RakThread::Create(UpdateNetworkLoop, this, threadPriority);

这两处创建了线程。但是有一堆的现在条件,打调试信息,看看是否走到这里

在以上的语句中分别打入pritf语句后,在起程序,发现如下

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值