SylixOS 下 pthread_create 创建线程满问题

SylixOS 下 pthread_create 创建线程满问题

内核版本: 1.10.9
客户程序应用场景中在执行完一次循环后会再次创建任务,执行数次后报了 "there is no ID to build a thread." 错误,搜索对应的代码


申请不到TCB控制块了。
查看 /proc/kernel/objects 记录的信息发现500个任务控制块已经用完了。

查看__threadDelete() 实现发现POSIX接口创建的线程需要指定相应的属性在任务执行完后才能释放任务控制块

1、POSIX接口创建任务指定 LW_OPTION_THREAD_DETACHED
2、在启动参数上添加 autorectcb=yes

这个差异是解决POSIX bug后合入的




    • Related Articles

    • 运行警告 "WARNING: ctx.vmem create error!" ?

      Q: SylixOS 程序运行时警告 "WARNING: ctx.vmem create error!" ? A:  SylixOS 动态加载器在加载应用程序后会尝试申请虚拟地址空间,如果申请的空间过大,会导致申请失败, 出现 "WARNING: ctx.vmem create error!"        可以调整环境变量SO_MEM_PAGES定义的大小,从而缩小申请的空间大小,避免出现警告
    • SylixOS 功能介绍及版本差异

      SylixOS功能介绍及版本差异 SylixOS 标准版 SylixOS 标准版是 SylixOS 的基础版本,具备如下功能: 兼容 IEEE 1003(ISO/IEC 9945)操作系统接口规范; 兼容 POSIX 1003.1b(ISO/IEC 9945-1)实时编程标准; 支持国军标 GJB7714-2012 操作系统接口规范; 优秀的实时性能(任务调度与切换算法时间复杂度为 O(1)); 支持无限多任务; 抢占式调度支持 256 个优先级; 支持虚拟进程; ...
    • error: xxx-sylixos-elf-lzocom.exe

      Q:IDE 在编译工程时出现:xxxx-sylixos-elf-lzocom.exe  应用程序出错。 应用程序无法正常启动(0xc000007b)。请单击“确定”关闭应用程序。信息如下图所示。 安装 vc2010_redist_x86.exe 即可解决此问题, 此文件在 IDE 软件安装包的 Tools 目录下(如 SylixOS IDE 3.9.11_professional\Tools) 。
    • 手动修改 SylixOS 工程类型的方法

       问题描述:        当我们想要通过 IDE 重新选择已有 SylixOS Project 的 base 时,如果 base 的类型需要变化,会遇到如下图所示的问题"SylixOS Base project invalid",导致无法选择想要的base。 问题原因:        当base类型变化了,创建SylixOS Project时,工程设置里设定了base的类型。 解决方法一:       ...
    • SylixOS 动态库更新 version 不一致的问题

      Q:SylixOS 动态库更新 version 不一致的问题 首先 SylixOS 是允许多个进程对共享库文件进行代码段共享的(默认是共享打开的,可以使用 dlconfig share dis 命令进行关闭),代码段共享会出现一个问题:当 A  进程 使用一个 share.so 共享库的时候,B 进程也使用 该 share.so 的共享库,share.so 共享库因为 B 的原因需要修改,修改后,更新share.so文件,然后重启 B 进程,一般来说会出现错误,错误如下: ...