2011-02-24 84 views
1

我有一段由n线程执行的代码。该代码包含,C#在线程间共享文件句柄

for(;;)//repeat about 10,000 times 
{ 
    lock(padlock) 
    { 
     File.AppendAllText(fileName, text); 
    } 
} 

基本上,所有的线程写入同一组的10,000个文件,因此该文件的共享资源。问题在于,每个线程执行的10,000次打开,写入和关闭都会大大减慢我的程序。如果我可以通过线程共享文件处理程序,我可以保持它们打开并从不同的线程写入。有人能告诉我如何继续?

+0

您想同时打开10.000个文件吗?请详细说明。 – 2011-02-24 12:06:13

+0

如果它加快我的系统,是吗? – Aks 2011-02-24 12:06:49

+0

现在这是可怕的想法。 – Lazarus 2011-02-24 12:07:57

回答

1

让所有线程写入同步列表。 让一条线程'吃'列表中的项目,并用一个FileWriter将它们写入文件。

Presto问题解决了一些额外的内存使用的交换。

+0

是不是有很多与集合的线程安全问题? – Aks 2011-02-24 12:41:35

+0

使用线程安全列表:D – CodingBarfield 2011-02-24 12:42:14

0

我建议您使用FileStream打开文件并共享该文件而不是fileName