目前我正在使用锁通过TCPClient类从FTP发送/接收文件。
但这只支持单个文件的发送和接收。
那么在这种情况下更好的使用方法是什么(锁、互斥、互锁、读\写锁、信号量)。
发布于 2009-12-22 15:58:37
假设您有一个要并行传输的文件列表(每个文件一个线程),并且想要等待所有的上传完成,您可以创建一个等待句柄数组(number of wait handles == number of files == number of thread ),并将其中一个(等待句柄:WaitHandle == 1:1)与线程应该传输的文件一起传递给每个线程。
线程将传输文件,在文件存在之前,它将设置等待句柄。
在“主线程”中,您可以等待使用WaitHandle.WaitAll(WaitHandle[])设置数组中的所有等待句柄(我在这里的确切语法可能不正确,但我确信确实存在这样的命令。我以前用过它)。
这被称为屏障。
发布于 2009-12-22 14:10:18
我不确定您的情况可以通过这些锁定上下文中的任何一个来解决。您可能希望研究异步I/O及其各种实现,但特别是关于WebRequest和Webresponse类。
您没有说明是使用默认类来处理FTP,还是使用自定义库。我(可能是错误的)假设您是自己创建FTP处理程序的。如果您使用的是第三方库,则应检查它们是否支持异步IO或其他形式的多线程。
发布于 2009-12-22 14:38:10
你可以使用信号量,这是一个创建多个并发工作的经典示例。
https://stackoverflow.com/questions/1944430
复制相似问题