首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于线程同步的内容(在c#中)

问用于线程同步的内容(在c#中)
EN

Stack Overflow用户
提问于 2009-12-22 14:03:03
回答 3查看 190关注 0票数 0

目前我正在使用锁通过TCPClient类从FTP发送/接收文件。

但这只支持单个文件的发送和接收。

那么在这种情况下更好的使用方法是什么(锁、互斥、互锁、读\写锁、信号量)。

EN

回答 3

Stack Overflow用户

发布于 2009-12-22 15:58:37

假设您有一个要并行传输的文件列表(每个文件一个线程),并且想要等待所有的上传完成,您可以创建一个等待句柄数组(number of wait handles == number of files == number of thread ),并将其中一个(等待句柄:WaitHandle == 1:1)与线程应该传输的文件一起传递给每个线程。

线程将传输文件,在文件存在之前,它将设置等待句柄。

在“主线程”中,您可以等待使用WaitHandle.WaitAll(WaitHandle[])设置数组中的所有等待句柄(我在这里的确切语法可能不正确,但我确信确实存在这样的命令。我以前用过它)。

这被称为屏障。

票数 1
EN

Stack Overflow用户

发布于 2009-12-22 14:10:18

我不确定您的情况可以通过这些锁定上下文中的任何一个来解决。您可能希望研究异步I/O及其各种实现,但特别是关于WebRequest和Webresponse类。

您没有说明是使用默认类来处理FTP,还是使用自定义库。我(可能是错误的)假设您是自己创建FTP处理程序的。如果您使用的是第三方库,则应检查它们是否支持异步IO或其他形式的多线程。

票数 0
EN

Stack Overflow用户

发布于 2009-12-22 14:38:10

你可以使用信号量,这是一个创建多个并发工作的经典示例。

http://www.dijksterhuis.org/using-semaphores-in-c/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1944430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档