C#跨线程共享文件句柄

C#跨线程共享文件句柄,c#,C#,我有一段由n线程执行的代码。代码包含: for(;;)//repeat about 10,000 times { lock(padlock) { File.AppendAllText(fileName, text); } } 基本上,所有线程都写入同一组10000个文件,因此这些文件是共享资源。问题是每个线程执行的10000次打开、写入和关闭操作大大降低了我的程序速度。如果我可以跨线程共享文件处理程序,我就能够保持它们的打开状态并从不同的线程写入。有人能

我有一段由
n
线程执行的代码。代码包含:

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

基本上,所有线程都写入同一组10000个文件,因此这些文件是共享资源。问题是每个线程执行的10000次打开、写入和关闭操作大大降低了我的程序速度。如果我可以跨线程共享文件处理程序,我就能够保持它们的打开状态并从不同的线程写入。有人能告诉我如何继续吗?

我建议您使用
文件流打开文件,并共享它,而不是
文件名
我建议您使用
文件流
打开文件,并共享它,而不是
文件名

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


Presto问题已解决,以换取一些额外的内存使用。

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


Presto问题已解决,以换取一些额外的内存使用。

是否同时打开10.000个文件?请详细说明。如果它加速了我的系统,是吗?哈哈……当你说“减慢我的程序”的时候,你能推荐一些替代方案吗?你把它和什么做比较?“减速”是一个相对术语。另外,它的运行速度有多慢,即处理那10000个文件需要多长时间?您能否重新构造程序,使其一次处理一个文件,而不是在文件之间来回跳跃?这将减少您需要执行的打开/关闭周期数。是否同时打开10.000个文件?请详细说明。如果它加速了我的系统,是吗?哈哈……当你说“减慢我的程序”的时候,你能推荐一些替代方案吗?你把它和什么做比较?“减速”是一个相对术语。另外,它的运行速度有多慢,即处理那10000个文件需要多长时间?您能否重新构造程序,使其一次处理一个文件,而不是在文件之间来回跳跃?这将减少需要执行的打开/关闭周期的数量。集合的线程安全性不是有很多问题吗?集合的线程安全性不是有很多问题吗?