問題は単純ですが、解決策 (存在する場合) は非常に複雑だと思います。とにかく、私は現在、単純なトランザクション処理 (PRINT、ADD、SLEEP、ASSIGN など) をスレッドを使用して並列に実装することになっている分散アプリケーションを開発しています (この割り当てには Pthreads を使用しています)。予想通り、競合する複数のトランザクション (最大 20 件) を同時に処理しようとすると、デッドロックが発生するという問題がありました。
ここで、各スレッドのトランザクション処理に多数の再試行を実装することにしました。これは、基本的にランダムに生成され、正確にその順序で呼び出されますsrand(time(NULL))
。rand()
問題は、(最大 5 つの異なるサーバーで) 複数のトランザクションを処理する場合、基本的に同じ秒で生成されるため、数値が一致することです。
だから、私の質問は、関数を使用せずに整数を完全にランダムに生成する方法はありtime()
ますか?
助けてくれてありがとう、そして(あまりにも)長い説明でごめんなさい。