c - Epoll vs Libevent for Bittorrent like application

标签 c multithreading bittorrent epoll libevent

我正在为 P2p 文件共享实现 bit torrent。比方说,最多 100 个对等方同时共享。 TCP 连接是在每个对等点之间建立的。最初,一个对等点拥有整个文件,它开始共享片段,随后所有对等点共享他们的片段。

通常,片段大小为 50kB - 1MB。我想知道,在 C 中编写此类应用程序的最佳方法是什么。将线程与 epoll 或 libevent 一起使用?

谁能给出不同可能方法的正面/负面影响?

最佳答案

如果我们在任何给定时刻只谈论 100 个对等连接,那么使用 select 的传统方法或 poll在一组 TCP 套接字上运行会很好。

EPoll 有助于解决何时需要扩展到数千个长时间运行的连接的问题。阅读 C10K problem 上的文档了解更多详情。

我听说过有关 libevent 的好消息。我相信它是 epoll 和其他套接字函数之上的抽象,提供了一些不错的东西。如果它使您的编程更容易,那么一定要使用它。但您可能不需要它来提高性能。

关于c - Epoll vs Libevent for Bittorrent like application,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29665513/

相关文章:

C++:具有 `std::lock_guard` 的互斥量是否足以同步两个 `std::thread`?

Javascript Torrent 文件解析

c - 在C中使用指针?使困惑

c++ - 访问C中的数组元素

c - 从 C 手动为 excel 创建多表文件

C 结构体字符串快速排序

c++ - 使用 std::async 控制并行度

multithreading - Parallel::ForkManager fork 后只有一个事件线程。为什么?

router - Bit Torrents 如何相互连接?

c++ - Client Torrent 中的 DLNA 协议(protocol)