【发布时间】:2015-01-07 15:34:14
【问题描述】:
我在网络应用程序中使用多线程“第一次”,我的问题是两个相关部分, 例如,如果我用一个类(每个消息一个类)表示 udp 中的一堆消息,那么将这些类的实例设为全局以便在不同的线程上发送它们是一个好习惯,或者更好的方法是使用具有类实例的结构和所有套接字信息作为该结构内的引用(然后使用 Pthread_create )
我认为在第一个选项中,必须非常小心以避免同时访问数据(使用 pthread_mutex)
请建议您如何解决这个问题。
非常感谢您的帮助
非常感谢
【问题讨论】:
-
网络编程不需要使用线程。使用
select()或您平台的等效项。或libev. -
如果你使用 c++11 或 c11 方式,并且你的编译器支持线程,你应该使用它而不是 pthreads。
-
避免许多线程必须共享一个值(从而同步其使用)的情况。
-
@JohnZwinck:
select或类似的方法适用于少量套接字,但限制您使用单个 CPU。遗憾的是,如今,如果您想使用计算机的所有资源,就需要并发。 -
我想要做的是,能够在后台向客户端发送周期消息,同时接收来自该客户端的消息,该客户端也发送周期消息。我想创建多线程,在一个线程中我会定期发送周期性消息,而其余的则在其他线程中完成。我的推理是否正确,我在某处阅读过使用 Select,但我不确定这是否可行。
标签: c++ c multithreading sockets pthreads