在这种情况下处理pthread通信/信号的正确方法是什么?

时间:2012-09-21 20:14:32

标签: c pthreads signals inter-process-communicat

我正在编写一个在同行之间共享文件的小型客户端/服务器演示。一个对等体从主服务器获取IP地址列表,主线程为每个相应的文件创建一个线程。这个过程如下:

  • 主线程获取服务器
  • 中的文件列表
  • 为每个文件创建的线程(已分离)
  • 在每个创建的线程中,连接到指定/与文件关联的对等项
  • 线程以块的形式下载文件
  • 线程宣布文件已完成

尝试“查询”某个帖子时,我的问题就出现了。在每个帖子中,我都会跟踪转移的进度。在我的主线程中,我希望用户能够看到所有传输的进度。最好的方法是什么?我正在考虑分别使用pthread_kill向每个线程发送信号,尽管看起来应该有更好的方法。如果有人有想法,我很乐意听到。

1 个答案:

答案 0 :(得分:1)

创建主题时,添加void *指向您想要的任何内容。在您的示例中,您可以声明一个进度值数组,并将其中一个的地址传递给您创建的每个线程,让线程在需要时执行简单更新,并且主线程可以定期检查值。

如果您已经在使用该参数,则需要创建一个包含此新值的结构以及您正在使用的任何值,并传递它的地址,以便线程获得所需的一切。