gpt4 book ai didi

c - pthread 函数参数的范围

转载 作者:太空狗 更新时间:2023-10-29 15:37:22 27 4
gpt4 key购买 nike

这是 pthread_setschedparam 的签名:

#include <pthread.h>

int pthread_setschedparam(pthread_t thread, int policy, const struct sched_param *param);

这段代码是否会导致意外行为:

void schedule(const thread &t, int policy, int priority) {
sched_param params;
params.sched_priority = priority;
pthread_setschedparam(t.native_handle(), policy, &params);
}

完全不清楚 params 的范围是否需要比单独的函数调用更广泛。当我看到一个接受指针的函数时,它表明(至少对我而言)它正在请求它的所有权。这个签名是不是设计得很糟糕? “sched_pa​​rams params”应该放在堆上吗?它是否需要比线程更长的时间才能保持有效?可以删除吗?

我不知道。

谢谢!

最佳答案

pthread_setschedparam 设置给定线程的调度策略。参数在调用后不需要存活。

如果最后一个参数的生命周期很重要(如您所说,如果 pthread_setschedparam 取得它的所有权),它就会被明确记录下来。但它不在 POSIX 文档中 pthread_setschedparam .

它采用指针(而不是值)的可能原因是传递指针比传递struct 更便宜。

关于c - pthread 函数参数的范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54027550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com