【发布时间】:2015-05-12 15:41:02
【问题描述】:
我在实现非抢占式调度时遇到了这段用于初始化 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
}
我知道上面代码中的获取上下文需要一个指向上下文的指针...但无法理解编译器如何解释&tcb->context...如
&tcb -> 上下文或 &(tcb -> 上下文).....
【问题讨论】:
-
它被解释为
&(tcp->context)。->的优先级高于&。您可以在en.cppreference.com/w/c/language/operator_precedence 找到运算符优先级列表。 -
@Ulfalizer 看起来像一个答案
-
@immibis:好的,转移到答案。
标签: c multithreading operating-system scheduling