Я не уверен, что пул потоков очень помогает здесь с файлами дисков. Один поток записи на диск имеет больше смысла. В каждом потоке сервера / клиента вы можете поставить в очередь (blockingCollection) полные экземпляры буфера данных в потоке записи и немедленно создать новый () другой буфер для поступления следующих данных. Каждый экземпляр буфера может содержать ссылку на порт класса 'fileWriter', который содержит спецификацию файла, дескриптор файла, методы записи и т. д., так что поток записи может открывать / записывать / закрывать файл, возможно, в соответствии с инструкциями перечисления. в каждом буфере.
FileWriter может содержать собственный список / очередь (любая очередь будет делать - она вызывается только из одного потока), что позволяет буферизовать экземпляры буфера до тех пор, пока не будет сформирован большой кусок данных, и только затем фактически выполняйте запись в файл, экономя при этом на движениях головы.