关于 c:在这种情况下处理 pthread 通信/信号的正确方法?

Proper way to handle pthread communication / signals in this instance?

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

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

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


当你创建你的线程时,你包含一个 void * 来指向你想要的任何东西。在您的示例中,您可以声明一个进度值数组并将其中一个的地址传递给您创建的每个线程,让线程在需要时执行简单的更新,并且您的主线程可以定期检查这些值。

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