0

Thread.CurrentThread.ManagedThreadIdマルチプロセッサ マシンで一意の ID を返します。

説明: 一意の番号を生成したい。現在の時刻、つまり currentTmeinmillisecons に基づいて一意の番号を生成しましたが、2 つのスレッドが同じタイムスタンプで同じ関数にアクセスするため、そのタイムスタンプに一意のものを追加したいと考えています。Thread.CurrentThread.ManagedThreadId そのため、CurrentTimeInMillisecondsを追加する予定です。

Thread.CurrentThread.ManagedThreadId を CurrentTimeInMilliseconds に追加できますか。

4

1 に答える 1

3

「CurrentTimeInMilliseconds に Thread.CurrentThread.ManagedThreadId を追加する」という意味が明確ではありません。たとえば、ManagedThreadId+CurrentTimeInMilliseconds の場合:

1+2 = 3
2+1 = 3

では、最終的に「独自の」価値を実際に作成していますか? ミリ秒ごとに複数回呼び出すとどうなりますか? プロセスごと、呼び出しごとに一意になるものが必要な場合は、次のようにします。

using System.Threading;

static class Foo
{
    static long i;
    public static long GetUnique() { return Interlocked.Increment(ref i); }
}

複数のプロセスで一意の番号を生成したい場合Guidは、行く方法です。

于 2013-10-22T06:57:54.923 に答える