Thread.CurrentThread.ManagedThreadId是多处理器安全的

时间:2013-10-22 06:46:54

标签: c# multithreading thread-safety

Thread.CurrentThread.ManagedThreadId返回多处理器计算机上的唯一ID。

说明:我想生成唯一编号。我根据当前时间生成了唯一的号码,即 currentTmeinmillisecons但是两个线程在相同的时间戳中访问相同的函数,所以我想在该时间戳中添加唯一的东西。因此,计划在CurrentTimeInMilliseconds中添加Thread.CurrentThread.ManagedThreadId

所以我可以在CurrentTimeInMilliseconds中添加Thread.CurrentThread.ManagedThreadId。

1 个答案:

答案 0 :(得分: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即可。