草庐IT

c++ - 如何为 C++ 多线程应用程序选择正确的线程数?

我是C++后端开发人员。我为实时游戏开发服务器端。因此,应用程序架构如下所示:1)我有一个客户端类,它处理来自游戏客户端的请求。请求示例:登录、在商店(游戏内部商店)购买东西或制作东西。此客户端还处理来自游戏客户端的用户输入事件(通常是事件,当玩家玩游戏时,它每秒从游戏客户端发送十次到服务器)。2)我有线程池。当游戏客户端连接到服务器时,我创建客户端实例并将它们绑定(bind)到池中的线程之一。所以,我们有一对多的关系:一个线程-许多客户。循环法用于选择线程进行绑定(bind)。3)我使用Libev来管理服务器内的所有事件。这意味着当客户端实例通过网络从游戏客户端接收到一些数据,或者处

c++ - 如何为 C++ 多线程应用程序选择正确的线程数?

我是C++后端开发人员。我为实时游戏开发服务器端。因此,应用程序架构如下所示:1)我有一个客户端类,它处理来自游戏客户端的请求。请求示例:登录、在商店(游戏内部商店)购买东西或制作东西。此客户端还处理来自游戏客户端的用户输入事件(通常是事件,当玩家玩游戏时,它每秒从游戏客户端发送十次到服务器)。2)我有线程池。当游戏客户端连接到服务器时,我创建客户端实例并将它们绑定(bind)到池中的线程之一。所以,我们有一对多的关系:一个线程-许多客户。循环法用于选择线程进行绑定(bind)。3)我使用Libev来管理服务器内的所有事件。这意味着当客户端实例通过网络从游戏客户端接收到一些数据,或者处

c++ - 嵌入式 Linux 上的轻量级调试

我正在开发一个在基于Linux的小型SBC(~32MBRAM)上运行的应用程序。可悲的是,我的应用程序最近变得太大而无法再在GDB下运行。有谁知道我可以在嵌入式Linux中使用的任何好的、轻量级的调试方法吗?即使能够查看线程的堆栈跟踪也会非常有帮助。我应该提到这个应用程序是用C++编写的并且运行多线程,所以gdbserver是不行的,因为它不适用于多线程应用程序。提前致谢摩诃 最佳答案 gdbserver绝对适用于多线程应用程序,我现在正在处理一个超过25个线程的嵌入式项目,并且我们一直使用gdbserver。infothreads

c++ - 嵌入式 Linux 上的轻量级调试

我正在开发一个在基于Linux的小型SBC(~32MBRAM)上运行的应用程序。可悲的是,我的应用程序最近变得太大而无法再在GDB下运行。有谁知道我可以在嵌入式Linux中使用的任何好的、轻量级的调试方法吗?即使能够查看线程的堆栈跟踪也会非常有帮助。我应该提到这个应用程序是用C++编写的并且运行多线程,所以gdbserver是不行的,因为它不适用于多线程应用程序。提前致谢摩诃 最佳答案 gdbserver绝对适用于多线程应用程序,我现在正在处理一个超过25个线程的嵌入式项目,并且我们一直使用gdbserver。infothreads

c - 什么是最好的,单线程或多线程服务器?

我必须创建一个简单的客户端服务器通信以使用C语言(Linux)传输文件。服务器在10000端口上接受连接,我不知道是每个请求创建一个新线程还是创建固定数量的线程并使用异步技术更好。CASEA:client-->server-->(newthread)-->processtherequestCASEB:SERVER-->createthread1-thread2-thread3thenclient1-->server-->thread1client2-->server-->thread2client3-->server-->thread3client4-->server-->thread

c - 什么是最好的,单线程或多线程服务器?

我必须创建一个简单的客户端服务器通信以使用C语言(Linux)传输文件。服务器在10000端口上接受连接,我不知道是每个请求创建一个新线程还是创建固定数量的线程并使用异步技术更好。CASEA:client-->server-->(newthread)-->processtherequestCASEB:SERVER-->createthread1-thread2-thread3thenclient1-->server-->thread1client2-->server-->thread2client3-->server-->thread3client4-->server-->thread

c++ - 为什么在线程中使用 system() 时,多线程 C 程序会在 Mac OS X 上强制使用单个 CPU?

我在Linux和MacOSX之间使用pthreads的程序的行为中遇到了一个奇怪的差异。考虑以下可以用“gcc-pthread-othreadtestthreadtest.c”编译的程序:#include#include#includestaticvoid*worker(void*t){inti=*(int*)t;printf("Thread%dstarted\n",i);system("sleep1");printf("Thread%dends\n",i);return(void*)0;}intmain(){#defineN_WORKERS4pthread_tworkers[N_WO

c++ - 为什么在线程中使用 system() 时,多线程 C 程序会在 Mac OS X 上强制使用单个 CPU?

我在Linux和MacOSX之间使用pthreads的程序的行为中遇到了一个奇怪的差异。考虑以下可以用“gcc-pthread-othreadtestthreadtest.c”编译的程序:#include#include#includestaticvoid*worker(void*t){inti=*(int*)t;printf("Thread%dstarted\n",i);system("sleep1");printf("Thread%dends\n",i);return(void*)0;}intmain(){#defineN_WORKERS4pthread_tworkers[N_WO

c++ - 在 Linux 上编写多线程 TCP 服务器

在工作中,我的任务是将TCP服务器实现为Modbus从设备的一部分。我在这里阅读了大量关于堆栈交换和互联网的阅读资料(包括优秀的http://beej.us/guide/bgnet/),但我正在努力解决设计问题。总之,我的设备只能接受2个连接,并且在每个连接上都会收到传入的modbus请求,我必须在我的主Controller循环中处理这些请求,然后以成功或失败状态回复。我对如何实现它有以下想法。有一个监听器线程创建、绑定(bind)、监听和接受连接,然后生成一个新的pthread来监听传入数据的连接,并在空闲超时期限后关闭连接。如果当前事件线程数为2,则立即关闭新连接以确保只允许2个。

c++ - 在 Linux 上编写多线程 TCP 服务器

在工作中,我的任务是将TCP服务器实现为Modbus从设备的一部分。我在这里阅读了大量关于堆栈交换和互联网的阅读资料(包括优秀的http://beej.us/guide/bgnet/),但我正在努力解决设计问题。总之,我的设备只能接受2个连接,并且在每个连接上都会收到传入的modbus请求,我必须在我的主Controller循环中处理这些请求,然后以成功或失败状态回复。我对如何实现它有以下想法。有一个监听器线程创建、绑定(bind)、监听和接受连接,然后生成一个新的pthread来监听传入数据的连接,并在空闲超时期限后关闭连接。如果当前事件线程数为2,则立即关闭新连接以确保只允许2个。