c - 我需要了解编译器如何解释 &tcb -> context

标签 c multithreading operating-system scheduling

我在实现非抢占式调度时遇到了这段用于初始化 TCB 的代码。

typedef struct TCB_t {
    struct TCB_t     *next;
     struct TCB_t     *prev;
     ucontext_t      context;
} TCB_t;


void init_TCB (TCB_t *tcb, void *function, void *stackP, int stack_size)
{
    memset(tcb, '\0', sizeof(TCB_t));
    getcontext(&tcb->context);              
    tcb->context.uc_stack.ss_sp = stackP;
    tcb->context.uc_stack.ss_size = (size_t) stack_size;
    makecontext(&tcb->context, function, 0);  // context is now cooked
}

我知道上面代码中的 get context 需要一个指向上下文的指针...但无法理解编译器如何将 &tcb->context 解释为... &tcb -> 上下文或 &(tcb -> 上下文).....

最佳答案

它被解释为&(tcp->context)-> 的优先级高于 &。您可以找到运算符优先级列表 here .

关于c - 我需要了解编译器如何解释 &tcb -> context,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28976638/

相关文章:

java - 复制到用户目录(java.nio)

c++ - 排序算法面试

c++ - 在 C/C++ 中调用 MATLAB API

C++ 无锁 C 风格共享数组(用于添加元素)

c# - 将数据与线程 : How do you do that? 相关联

适用于 Windows 10 的 Java "os.name"?

c - mbedtls 版本之间有什么区别? Mbed TLS 2.xx.x 和 2.x.xx

c - OpenMP 最小值数组

python - 如何等待生成的线程在 Python 中完成

operating-system - 守护进程和正常进程之间的行为差​​异是什么?