今晚在跑之前写的一个创建新线程的代码,发现:执行设置系统调度策略以及调度参数相关的参数后,调用pthread_create生成新的任务时,得到返回值为1的情况:

    pthread_attr_init(&attr);if (desc->stack_size != 0){pthread_attr_setstacksize(&attr, desc->stack_size);}pthread_attr_getinheritsched(&attr, &inher);if (inher != PTHREAD_EXPLICIT_SCHED){log_warn("change sched!\n");inher = PTHREAD_EXPLICIT_SCHED;}pthread_attr_setinheritsched(&attr, inher);// 设置线程调度策略policy = SCHED_FIFO;pthread_attr_setschedpolicy(&attr, policy);// 设置调度参数param.sched_priority = desc->prio;pthread_attr_setschedparam(&attr, &param);ret = pthread_create(tinfo, &attr, desc->fn, desc->arg);// TODO: return code = 1 ???if (ret != 0){log_err("task create err code = (%d)\n", ret);pthread_attr_destroy(&attr);free(tinfo);return NULL;}

打印信息:

Work in host mode!
Upgrade file = defines.mk
comm rule = 0x10
set port = /dev/ttyUSB0
Success open /dev/ttyUSB0
change sched!
task create err code = (1)
Create Thread phrase core failed!
comm core init failed!
comm init err!

但是从 http://www.man7.org/linux/man-pages/man3/pthread_create.3.html

查找相关返回值信息,找到了返回值为1的情况:

RETURN VALUE         topOn success, pthread_create() returns 0; on error, it returns an errornumber, and the contents of *thread are undefined.ERRORS         topEAGAIN Insufficient resources to create another thread.EAGAIN A system-imposed limit on the number of threads wasencountered.  There are a number of limits that may triggerthis error: the RLIMIT_NPROC soft resource limit (set viasetrlimit(2)), which limits the number of processes andthreads for a real user ID, was reached; the kernel's system-wide limit on the number of processes and threads,/proc/sys/kernel/threads-max, was reached (see proc(5)); orthe maximum number of PIDs, /proc/sys/kernel/pid_max, wasreached (see proc(5)).EINVAL Invalid settings in attr.EPERM  No permission to set the scheduling policy and parametersspecified in attr.

其中的ERRORS = EPERM的定义,在 erron.h 头文件中的定义,就是1,从解释看,就是说没有权限来设置调度策略及参数定义。

所以,这个代码涉及到修改调度策略,需要在ROOT权限下来执行。

pthread_create返回值相关推荐

  1. pthread_create回调函数返回值

    Linux平台中通过POSIX接口创建线程函数为: #include <pthread.h> int pthread_create(pthread_t *restrict tidp,con ...

  2. C语言 线程的回收与子线程返回值的接收

    穿的参数为二级指针 需要用全局变量来返回子线程的返回值 // ..使用内存映射可以拷贝文件 /* 对原始文件进行内存映射 创建一个新文件 把新文件的数据拷贝映射到内存中 通过内存拷贝将第一个文件的内存 ...

  3. 【读书笔记】【程序员的自我修养 -- 链接、装载与库(三)】函数调用与栈(this指针、返回值传递临时对象构建栈、运行库与多线程、_main函数、系统调用与中断向量表、Win32、可变参数、大小端

    文章目录 前言 介绍 内存 内存布局 栈与调用惯例 堆与内存管理 运行库 入口函数和程序初始化 C/C++运行库 运行库与多线程 C++全局构造与析构 fread 实现 系统调用与API 系统调用介绍 ...

  4. Linux多线程编程-线程函数返回值(返回简单数据类型)

    引言 通过几个实验练习,学习线程之间连接的具体实现.下面列举了两个例子,一个是子线程返回简单数据类型:另一个是子线程返回复杂数据类型. 实现代码 子线程返回简单的数据类型 #include<st ...

  5. Redis 笔记(10)— 发布订阅模式(发布订阅单个信道、订阅信道后的返回值分类、发布订阅多个信道)

    1. 发布-订阅概念 发布-订阅 模式包含两种角色,分别为发布者和订阅者. 订阅者可以订阅一个或者若干个频道(channel): 而发布者可以向指定的频道发送消息,所有订阅此频道的订阅者都可以收到此消 ...

  6. Go 学习笔记(61)— Go 高阶函数、函数作为一等公民(函数作为输入参数、返回值、变量)的写法

    函数在 Go 语言中属于"一等公民(First-Class Citizen)"拥有"一等公民"待遇的语法元素可以如下使用 可以存储在变量中: 可以作为参数传递给 ...

  7. Python 函数参数有冒号 声明后有- 箭头 返回值注释 参数类型注释

    在python3.7 环境下 函数声明时能在参数后加冒号,如图: 1 def f(ham: str, eggs: str = 'eggs') -> str : 2 print("Ann ...

  8. [JS]请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组。

    请给Array本地对象增加一个原型方法,它用于删除数组条目中重复的条目(可能有多个),返回值是一个包含被删除的重复条目的新数组. 刚开始复习js题还不太习惯 CSDN上看了一个帖子,说是牛客上的标答, ...

  9. 微信小程序根据后台返回值设置自己想要的结果

    今天做微信小程序充值列表 其中微信或者支付后台返回的是1和2 , 那么就需要判断返回值是否为1或者是2然后在改变 简单的就是在xml中判断下就行了 <view class='recharge_t ...

最新文章

  1. postfix邮件安装配置文档
  2. OSSIM系统用户审计
  3. Spring Boot中使用MongoDB数据库
  4. linux 3gpp格式转换器,Movavi Video Converter
  5. 就业模拟试题_Net(答案)
  6. Chino with Geometry(数学,计算几何,记录一下推导证明)
  7. hdu3081 Marriage Match II(最大流)
  8. linux连接FreeBSD虚拟机的mysql
  9. 设计模式(五) 注解方式实现AOP
  10. java伪代码生成器_java伪代码怎么写
  11. 蓝桥杯真题:k倍区间
  12. Spark安装部署:Standalone模式
  13. 中国天气数据,中国地面气象站要素清单
  14. unity直播推流方式_干货,抖音无人直播技术(建议收藏)
  15. Mysql闪退解决方法
  16. 一篇文章带你深入了解Dart语言
  17. mysql数据库order by_[数据库]mysql 使用order by
  18. 4.Mybatis 环境搭建
  19. 选择unity还是unreal4
  20. 制作一个经典坦克大战

热门文章

  1. 三、系统开发和项目管理基础
  2. java jxl 文本文件_JXl(excel文件的读写操作)使用API(全)
  3. JXL导出excel
  4. linux闹钟函数用法(alarm)
  5. 数据库连接中OleDbConnection的用法
  6. Windows API一日一练(55)FlushFileBuffers和SetFilePointer函数
  7. Optional 初始化和获取注意事项
  8. 网名接龙之--引路人
  9. mitmproxy-ca-cert.pem手机证书文件安装(一直安装不上,折磨我了两天!)
  10. 滑动轨迹 曲线 python_滑氏的起源 - 滑氏族谱 - 滑姓