Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 图书馆是否有透明的网络?_C_Multithreading_Sockets - Fatal编程技术网

C 图书馆是否有透明的网络?

C 图书馆是否有透明的网络?,c,multithreading,sockets,C,Multithreading,Sockets,我知道网络编程可能是一个大陷阱。处理套接字有同步/异步方式 现在我有了一个应用程序,它使用了大量线程,并将同步套接字send/recv发送到服务器。我认为这是一种非常低效的编写网络应用程序的方法。我的问题是,是否有任何透明(通过预加载)的网络加速库可以神奇地用更现代的epoll/async方式取代传统应用程序中的线程/同步模型?就像tcmalloc对malloc做的一样 谢谢 ================== 好吧,一个简短的调查似乎给出了否定的答案。然后我将编写自己的加速库。祝我好运。线程

我知道网络编程可能是一个大陷阱。处理套接字有同步/异步方式

现在我有了一个应用程序,它使用了大量线程,并将同步套接字send/recv发送到服务器。我认为这是一种非常低效的编写网络应用程序的方法。我的问题是,是否有任何透明(通过预加载)的网络加速库可以神奇地用更现代的epoll/async方式取代传统应用程序中的线程/同步模型?就像tcmalloc对malloc做的一样

谢谢

==================


好吧,一个简短的调查似乎给出了否定的答案。然后我将编写自己的加速库。祝我好运。

线程通常与阻塞模型一起使用(即等待数据准备就绪),而epoll/async使用非阻塞事件驱动模型。虽然将非阻塞代码封装到使用阻塞模型开发的应用程序中相当容易,但情况并非如此。要从阻塞模式转变为非阻塞的基于事件的模式,您必须重新思考并重写应用程序。

线程通常会加快速度,因此使用所有线程制作一个大数据包并立即发送会更慢。这不是一个简单的替代,但它是异步的,并且抽象出了各种基于事件的实现。考虑到这两种方法的不同,这将是一个非常了不起的库。