首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Task.Id属性的非唯一性意味着什么?

Task.Id属性的非唯一性意味着什么?
EN

Stack Overflow用户
提问于 2022-03-15 01:18:19
回答 1查看 121关注 0票数 2

learn.microsoft.com上说:

注意,虽然冲突非常罕见,但任务标识符并不一定是唯一的。

这是否意味着堆中可以同时存在具有相同ID的任务?或者它是否意味着它不可能存在,但是有一些具有其他任务已经不存在的it的任务?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-03-15 01:26:54

这意味着,如果创建4,294,967,295个任务,并读取每个任务的Id属性,那么第一个任务和最后一个任务的值都将为Id

您可以看到Task.Id属性这里的源代码。以下是此代码的实质:

代码语言:javascript
运行
复制
public class Task
{
    private volatile int m_taskId;

    public int Id
    {
        get
        {
            if (m_taskId == 0)
            {
                int newId = NewId();
                Interlocked.CompareExchange(ref m_taskId, newId, 0);
            }
            return m_taskId;
        }
    }

    internal static int s_taskIdCounter;

    internal static int NewId()
    {
        int newId = 0;
        do
        {
            newId = Interlocked.Increment(ref s_taskIdCounter);
        }
        while (newId == 0);
        return newId;
    }
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71475947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档