C 在多个线程中共享一个结构
我正在用C写一个小的IRC程序,我在用线程处理多个客户端, 我使用链表来存储每个客户端的fd。因此,如果一个客户端发送消息,它将被写入其他客户端的fd上 我不确定这是最好的方法,你能给我一些建议吗 另外,通过这种方式,我需要在整个线程中共享结构(其中包含每个客户端的文件描述符),因此如果某个线程中有更新,它将更新其他线程的结构。我想知道如何才能做到这一点,我如何才能共享该结构C 在多个线程中共享一个结构,c,multithreading,irc,C,Multithreading,Irc,我正在用C写一个小的IRC程序,我在用线程处理多个客户端, 我使用链表来存储每个客户端的fd。因此,如果一个客户端发送消息,它将被写入其他客户端的fd上 我不确定这是最好的方法,你能给我一些建议吗 另外,通过这种方式,我需要在整个线程中共享结构(其中包含每个客户端的文件描述符),因此如果某个线程中有更新,它将更新其他线程的结构。我想知道如何才能做到这一点,我如何才能共享该结构 欢迎任何帮助。如果不了解您的设计,很难评论您的FD链接列表是否合适 在线程之间共享数据结构方面,您无需执行任何操作。线程
欢迎任何帮助。如果不了解您的设计,很难评论您的FD链接列表是否合适 在线程之间共享数据结构方面,您无需执行任何操作。线程共享内存空间,因此在一个线程中可见的任何内容都将在另一个线程中可见。您唯一的风险是有多个线程同时修改结构,这是您通过使用互斥信号量(mutex)来防止的
由于您使用的是Linux,我假设您使用的是POSIX线程(),在这种情况下,您需要查看函数。在您的设置中,我将使用:
- 每个通道一个输入队列
- 每个客户端一个输出队列
结构
,然后可以由线程处理(每个线程有一个或多个客户机或通道)
所有队列都是使用pthread\u mutex\u t
保护的简单链表。当函数需要访问它们时,它会锁定队列、添加消息并解锁