一部のスレッドで1からNまでの数のハッシュ(MD5)を生成しています。ハッシュの最初の文字によると、ハッシュを生成する番号は配列に格納されます。たとえば、番号1はc4ca4238a0b923820dcc509a6f75849bになり、番号2はc81e728d9d4c2f636f067f89cc14862cになるため、「c」で始まる特定のハッシュ配列に格納されます。
問題は、それらを低いものから高いものへとソートして生成する必要があるということです。シーケンスが終了した後にそれらをソートするのは非常に費用がかかります。Nは2^40にもなる可能性があります。私はスレッドを使用しているので、ソートが自然に行われることはありません。たとえば、1つのスレッドは番号12(c20ad4d76fe97759aa27a0c99bff6710)のハッシュを生成して「c」配列に格納し、他のスレッドは番号8(c9f0f895fb98ab9159f51fd0297e236d)のハッシュを生成して番号12の後に「c」配列に格納できます。
スレッドが実行されている限り、スレッドは互いに非常に離れている可能性があるため、配列の最後の番号を簡単に確認することはできません。
このスレッドの問題の解決策はありますか?すべてのスレッドが終了した後にアレイを注文するよりも高速なソリューションは素晴らしいでしょう。
私はこれをCで実装しています。
ありがとうございました!