Передача массива через анонимные каналы - C#

Узнай цену своей работы

Формулировка задачи:

Ребята, задача: передать массив из миллиона элементов от канала сервера каналу клиенту. Использовать анонимные каналы и метод синхронизации lock. Написал программу, но она передает массив размерностью не более 1300 элементов (примерно). Пожалуйста, подскажите, что делать.
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading;
  6. using System.IO;
  7. using System.IO.Pipes;
  8. namespace MultiThread
  9. {
  10. class Program
  11. {
  12. static object Locker = new object();
  13. static public Stream outStream;
  14. static public Stream inStream;
  15. public static AnonymousPipeServerStream pipeServer;
  16. public static AnonymousPipeClientStream pipeClient;
  17. static public string pipeHandle = "";
  18. static public int n = 0;
  19. public static void channelOut()
  20. {
  21. lock (Locker)
  22. {
  23. pipeServer = new AnonymousPipeServerStream(PipeDirection.Out);
  24. outStream = pipeServer;
  25. pipeHandle = pipeServer.GetClientHandleAsString();
  26. StreamWriter writer = new StreamWriter(outStream);
  27. int[] array;
  28. Console.WriteLine("Введите размерность массива ");
  29. n = Convert.ToInt32(Console.ReadLine());
  30. array = new int[n];
  31. Random rnd = new Random();
  32. for (int i = 0; i < n; i++)
  33. {
  34. array[i] = (1 + rnd.Next(10));
  35. //Console.Write("{0}|", array[i]);
  36. }
  37. for (int i = 0; i < n; i++)
  38. {
  39. writer.WriteLine(array[i]);
  40. }
  41. writer.Close();
  42. }
  43. }
  44. private static void channelIn()
  45. {
  46. Thread.Sleep(1000);
  47. lock (Locker)
  48. {
  49. pipeClient = new AnonymousPipeClientStream(PipeDirection.In, pipeHandle);
  50. inStream = pipeClient;
  51. StreamReader Reader = new StreamReader(pipeClient);
  52. int[] mas3 = new int[n];
  53. Console.WriteLine("");
  54. for (int i = 0; i < n; i++)
  55. {
  56. mas3[i] = Convert.ToInt32(Reader.ReadLine());
  57. Console.Write("{0}|", mas3[i]);
  58. }
  59. Reader.Close();
  60. }
  61. }
  62. public static void Main()
  63. {
  64. Thread th1 = new Thread(() => channelOut());
  65. Thread th2 = new Thread(() => channelIn());
  66. th1.Start();
  67. th2.Start();
  68. th1.Join();
  69. th2.Join();
  70. Console.ReadLine();
  71. }
  72. }
  73. }

Решение задачи: «Передача массива через анонимные каналы»

textual
Листинг программы
  1. pipeServer = new AnonymousPipeServerStream(PipeDirection.Out, HandleInheritability.Inheritable, 1000000000);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.077 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы