Правильный очередности многопоток в работе с файлом через C#? | Криптография

Tuw

Client
Регистрация
07.09.2014
Сообщения
441
Благодарностей
150
Баллы
43
Что делает код? Берет из файла строку и хеширует ее в SSHA хеш, SSHA это каша SHA1, digest и base64 (это эдакий аналог кода
Код:
echo -n "my_text" | openssl sha1 -binary | base64
, который превращает my_text в SSHA
,потом записывает результат в файл.
Дело в том, что хочется многопотока, нужно обработать около 16к строк, а когда в самом ZP ставлю 100 и 200 потоков, то строки не совпадают к сожалению, строки пишутся не по очередности. Файлы с текстом привязаны. Что же не так?

Код:
var text = project.Variables["Text"].Value;
byte[] data = Encoding.Default.GetBytes(text);
var result = new SHA1Managed().ComputeHash(data);
return Convert.ToBase64String((result));
Сам шаб:
 

Вложения

  • 24,5 КБ Просмотры: 12

Nick

Client
Регистрация
22.07.2014
Сообщения
1 963
Благодарностей
796
Баллы
113
А и не будет никакой очередности, ты же это не запрограммировал. А зачем тебе нужно, чтобы куча потоков наперебой ломилась писать в один файл, да ещё и в правильном порядке туда заходила? Вообще, это реализуется с помощью глобальной переменной, точнее двух. Алгоритм такой: если не существует глобального счётчика ВХОДНОЙ, создать его. Аналогично со счётчиков ВЫХОДНОЙ. Далее.
Взять из исходного файлы строку с индексом ВХОДНОЙ, увеличить счётчик ВХОДНОЙ. Вычислить хэш. Если счётчик ВХОДНОЙ совпадает с ВЫХОДНОЙ + 1, записать хэш, увеличить счётчик ВЫХОДНОЙ и выйти. Иначе ждать 50 мс.
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)