了解系统的线程资源限制是使得应用程序恰当地管理它们的关键。前面已经讨论了利用系统资源的示例。当设置线程的栈大小时,最小值为PTHREAD_MIN_STACK。栈大小不应当低于由pthread_attr_getstacksize( )返回的默认栈大小的最小值。每个进程的最大线程数决定了能够为每个进程创建的worker线程的上限。函数sysconf( )用于返回可配置系统限制或选项的当前值。系统中定义了同线程、进程和信号量相关的多个变量和常量。在表6-8中,列出了部分变量和常量。
变量
|
名字值(Name Value)
|
描述
|
_SC_THREADS
|
_POSIX_THREADS
|
支持线程
|
_SC_THREAD_ATTR_STACKADDR
|
_POSIX_THREAD_ATTR_STACKADDR
|
支持线程栈地址属性
|
_SC_THREAD_ATTR_STACKSIZE
|
_POSIX_THREAD_ATTR_STACKSIZE
|
支持线程栈大小属性
|
_SC_THREAD_STACK_MIN
|
PTHREAD_STACK_MIN
|
线程栈存储区的最小大小,以字节为单位
|
_SC_THREAD_THREADS_MAX
|
PTHREAD_THREADS_MAX
|
每个进程的最大线程数
|
_SC_THREAD_KEYS_MAX
|
PTHREAD_KEYS_MAX
|
每个进程关键字的最大数目
|
_SC_THREAD_PRIO_INHERIT
|
_POSIX_THREAD_PRIO_INHERIT
|
支持优先级继承选项
|
_SC_THREAD_PRIO
|
_POSIX_THREAD_PRIO_
|
支持线程优先级选项
|
_SC_THREAD_PRIORITY_SCHEDULING
|
_POSIX_THREAD_PRIORITY_SCHEDULING
|
支持线程优先级调度选项
|
_SC_THREAD_PROCESS_SHARED
|
_POSIX_THREAD_PROCESS_SHARED
|
支持进程共享同步
|
_SC_THREAD_SAFE_FUNCTIONS
|
_POSIX_THREAD_SAFE_FUNCTIONS
|
支持线程安全函数
|
_SC_THREAD_DESTRUCTOR_ITERATIONS
|
_PTHREAD_THREAD_DESTRUCTOR_ITERATIONS
|
决定在线程退出时尝试销毁线程特定数据的尝试次数
|
_SC_CHILD_MAX
|
CHILD_MAX
|
每个UID允许的最大进程数目
|
_SC_PRIORITY_SCHEDULING
|
_POSIX_PRIORITY_SCHEDULING
|
支持进程调度
|
_SC_REALTIME_SIGNALS
|
_POSIX_REALTIME_SIGNALS
|
支持实时信号
|
_SC_XOPEN_REALTIME_THREADS
|
_XOPEN_REALTIME_THREADS
|
支持X/Open POSIX实时线程特性组
|
_SC_STREAM_MAX
|
STREAM_MAX
|
决定进程能够打开的流的数目
|
_SC_SEMAPHORES
|
_POSIX_SEMAPHORES
|
支持信号量
|
_SC_SEM_NSEMS_MAX
|
SEM_NSEMS_MAX
|
决定线程能够拥有的信号量的最大数目
|
_SC_SEM_VALUE_MAX
|
SEM_VALUE_MAX
|
决定信号量的最大值
|
_SC_SHARED_MEMORY_OBJECTS
|
_POSIX_SHARED_MEMORY_OBJECTS
|
支持共享内存对象
|
下面是调用sysconf( )的示例:
- if(PTHREAD_STACK_MIN==(sysconf(_SC_THREAD_STACK_MIN))){
- //...
- }
参考网址:
http://deepfuture.javaeye.com/category/120753?page=4&show_full=true
分享到:
相关推荐
开发者可能需要使用`sysconf(_SC_NPROCESSORS_ONLN)`这样的系统调用来获取系统的核心数,并据此调整线程数量。 在调试和分析多线程程序时,工具如`gdb`(GNU调试器)和`strace`(系统调用跟踪)可以提供帮助,它们...
Linux多线程编程 1、多线程模型在单处理器模型和多处理器系统上,都能改善响应时间和吞吐量。 2、线程包含了表示进程内执行环境必须的信息,包括线程ID、一组寄存器、栈、调度优先级、策略、信号屏蔽字、errno变量、...
在编程领域,Linux环境下的C语言是至关重要的,因为它提供了对操作系统底层的直接访问,使得开发者可以编写高效、低级别的程序。"Linux C函数集"是一个集合,包含了大量用于Linux系统编程的C语言函数,这些函数是...
10. **系统信息获取**:getpid, getppid获取进程ID,uname获取系统信息,sysconf获取系统配置,getrlimit获取资源限制等。 通过《Linux C 函数全集》这本书,开发者能够全面了解和掌握在Linux环境中使用C语言进行...
总的来说,Linux系统提供了丰富的工具和接口来获取和分析硬件配置,`sysconf`函数和`/proc/cpuinfo`文件是其中最常用的。通过这些工具,我们可以准确地判断和利用CPU的数量和特性,从而更好地进行系统管理和软件优化...
总的来说,通过`sysconf`函数可以轻松获取Linux系统中的CPU数量,而物理ID和核心ID的分析则有助于我们理解多核和超线程的CPU架构。这些知识在系统管理、性能优化以及资源调度中都非常重要,特别是在服务器配置和大型...
- `sysconf`获取系统配置信息,如最大打开文件描述符数,最大线程数等。 - `getpid`,`getppid`分别获取当前进程ID和父进程ID。 这本Linux C函数手册对于开发者来说是一份宝贵的资源,它详尽地解释了这些函数的...
8. **系统信息获取**:`sysconf()`, `uname()`等,用于获取系统配置信息,如最大打开文件数、系统版本等。 9. **文件系统操作**:`mkdir()`, `unlink()`, `rename()`等,FFmpeg可能需要在磁盘上创建临时文件或目录...
2.5.4 sysconf、pathconf和fpathconf 函数32 2.5.5 不确定的运行时限制38 2.6 选项42 2.7 功能测试宏44 2.8 基本系统数据类型45 2.9 标准之间的冲突45 2.10 小结46 习题46 第3章文件i/o 47 3.1 引言47 ...
2.5.4 sysconf、pathconf和fpathconf 函数32 2.5.5 不确定的运行时限制38 2.6 选项42 2.7 功能测试宏44 2.8 基本系统数据类型45 2.9 标准之间的冲突45 2.10 小结46 习题46 第3章文件i/o 47 3.1 引言47 ...
7. **线程管理**:在Linux中,`pthread_create()`、`pthread_join()` 和 `pthread_exit()` 等函数用于创建、同步和结束线程,`pthread_mutex_t` 和 `pthread_cond_t` 用于线程间的互斥锁和条件变量。 8. **信号处理...
11. **系统信息获取**:getpid、getppid、getuid、getgid等获取进程和用户ID,sysconf获取系统配置信息。 12. **标准I/O流**:标准输入输出流(stdin, stdout, stderr),以及fopen、fclose、fprintf等用于处理。 ...
- 通过`<stdlib.h>`中的`malloc()`和`free()`了解内存分配和释放,以及`<unistd.h>`中的`sysconf()`获取系统配置信息,如最大打开文件数。 - `<stdio.h>`的`FILE`结构体和I/O函数可以用于磁盘文件的读写操作,进而...
除了上述常见的C库函数,Linux还提供了许多特定于系统的函数,例如与系统调用交互的`syscall`,以及访问系统信息的`sysconf`和`uname`等。 在学习和使用这些函数时,查阅在线文档如...
错误处理和信息获取方面,`errno` 变量记录了最近系统调用的错误代码,`perror` 函数将错误代码转换为人类可读的错误信息。`sysconf` 和 `getconf` 可以获取系统配置信息,`time` 和 `ctime` 处理时间相关的操作。 ...
9. **配置文件和命令行参数**:`getopt()`函数用于解析命令行参数,而`sysconf()`和`getenv()`分别用于获取系统配置和环境变量。 10. **权限和访问控制**:C语言提供了`chmod()`, `chown()`, `access()`等函数,...
2.5.4 sysconf、pathconf和fpathconf函数 2.5.5 不确定的运行时限制 2.6 选项 2.7 功能测试宏 2.8 基本系统数据类型 2.9 标准之间的冲突 2.10 小结 习题 第3章 文件I/O 3.1 引言 3.2...
2.5.4 sysconf、pathconf和fpathconf函数 32 2.5.5 不确定的运行时限制 38 2.6 选项 42 2.7 功能测试宏 44 2.8 基本系统数据类型 45 2.9 标准之间的冲突 45 2.10 小结 46 习题 46 第3章 文件I/O 47...
285 第11章 线程 287 11.1 引言 287 11.2 线程概念 287 11.3 线程标识 288 11.4 线程的创建 288 11.5 线程终止 291 11.6 线程同步 297 11.7 小结 311 习题 311 第12章 线程控制 313 12.1 引言 ...