首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么原子读取微线程结构中的计数变量?

为什么原子读取微线程结构中的计数变量?
EN

Stack Overflow用户
提问于 2015-10-16 17:19:40
回答 1查看 110关注 0票数 0

在tasklet_action例程中-处理来自tasklet_vec列表的条目时

核心,我们正在原子读取计数(&t->atomic_read),我看不到

它在日常生活中的任何用法,它的意义是什么?

代码语言:javascript
复制
if (tasklet_trylock(t)) { // check is it is not already being executed
        if (!atomic_read(&t->count)) {
            if (!test_and_clear_bit(TASKLET_STATE_SCHED, &t->state))
                BUG();
            t->func(t->data); // call tasklet action routine
            tasklet_unlock(t);
            continue;
        }
        tasklet_unlock(t);
    }
EN

回答 1

Stack Overflow用户

发布于 2015-10-21 00:40:12

如果计数不等于零,则将微线程视为停用/禁用。

在某些体系结构中,读操作不会发生在单个汇编指令中。例如,如果您正在读取64位值,编译器可能会使用汇编的两个加载指令来实现读取,以便第一条指令读取较低的32位,第二条指令读取较高的32位。这反过来会导致竞争条件。因此,原子读取是首选。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33166750

复制
相关文章

相似问题

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