スレッドを使用してソート アルゴリズム (クイックソート) を最適化しようとしています。std::sort() 実装ですでにかなり優れていることはわかっていますが、コンピューターの最適化でそれを打ち負かし、同時にスレッドについて学習しようとしています。
それで、私の質問は、再帰的なクイックソート機能でスレッドをどのように使用するのですか?
これが関数です(質問にとって重要ではないものは削除されています):
template <typename T>
void quicksort(T arr[], const int &size, const int &beginning, const int &end)
{
// Algorithm here
thread t1(quicksort, arr, size, beginning, slow - 1);
thread t2(quicksort, arr, size, slow + 1, end);
}
私が間違っていて、さらに多くのコードが必要になった場合は、お知らせください。更新します。
私はVisual Studio 2012を使用していますが、現在、エラーは次のように述べています。
error C2661: 'std::thread::thread' : no overloaded function takes 5 arguments
また、各パラメーターで ref(arr) などを呼び出してみましたが、同じエラーが発生しました。
編集: @mfontanini による解決策を試した後、エラーなしでコンパイルできますが、実行すると次のようになります:
Debug Error!
Program: ...sktop\VisualStudio\Projects\SpeedTester\Debug\SpeedTester.exe
R6010
- abort() has been called
(Press Retry to debug the application)
何度も何度も繰り返しました。最終的に、コード 3 で終了します。