如果程序需要创建大量的线程,要考虑用 root 用户执行这个程序。
来源:互联网 发布:csgo网络连接失败 编辑:程序博客网 时间:2024/05/17 22:45
在Linux下,只有root用户才可以创建很多很多线程(这里说的就是线程,不是进程),普通用户创建线程的数量是有限制的,超过这个限制创建就会失败。
下面是个实例(test.c):
#include <pthread.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#define MAX_TEST_THREAD 3000
void * handle(void *data)
{
while(1)
sleep(1);
}
int main()
{
int i, n, r;
pthread_t pid;
printf("Now try to create %d threads.\n",MAX_TEST_THREAD);
for(i=0, n=0; i<MAX_TEST_THREAD; i++)
{
r = pthread_create(&pid,NULL,handle,NULL);
if(r != 0)
{
fprintf(stderr,"pthread_create error: %s\n", strerror(r));
break;
}else
{
n++;
}
}
printf("%d threads have been created!\n", n);
sleep(5);
exit(0);
}
用普通用户 oracle 执行:
[oracle@localhost]$ ./test
Now try to create 3000 threads.
pthread_create error: Resource temporarily unavailable
885 threads have been created! // oracle用户创建线程有限制,不能创建3000个线程。
切换到 root 用户执行:
[oracle@localhost]$ su
Password:
[root@localhost]# ./test
Now try to create 3000 threads.
3000 threads have been created! // root用户能创建3000个线程。
[root@localhost]#
所以,如果程序需要创建大量的线程,要考虑切换到 root 下执行这个程序。
- 如果程序需要创建大量的线程,要考虑用 root 用户执行这个程序。
- 非root 用户用root权限执行程序的设置方法
- 非root用户执行程序---sudo的使用
- 用javaFx开发的C/S程序,客户端需要更新,需要写个程序,如果有新版本需要提示用户更新。
- 考虑下面的程序的执行
- Linux下用户获取root权限执行程序
- 编写高效服务器程序,需要考虑的因素
- 剑指offer------写程序时需要考虑的小tips
- 开发webapi程序时需要考虑的细节汇总
- 有感于:“如果程序的缩进超过 3 级,则应考虑重新设计程序”
- Win7下执行需要管理员权限的程序
- 我是java的初学者,急需要这个程序!
- 如果你的程序没有改动,但系统已经出现问题了,请考虑以下情况。
- SAP更新数据表的程序执行需要SE38后执行
- 利用线程调用程序执行的方法!
- 如何使用CDT调试需要ROOT权限的LINUX程序
- 编写程序访问需要 root 权限的文件夹
- 搭建线程池需要考虑的因素
- struts2+jquery实现ajax
- [windows store 学习]ScrollViewer中TextBox自动获取焦点的问题
- Ubuntu java 环境变量
- 用sqoop进行mysql和hdfs系统间的数据互导
- C语言常用知识点
- 如果程序需要创建大量的线程,要考虑用 root 用户执行这个程序。
- Oracle 游标使用全解
- Android使用AIDL实现进程间通信
- ajax set session can not save
- 负载过高需要注意的几点
- win7下使用EasyBCD安装ubuntu12.10
- 压缩跟踪Compressive Tracking源码理解
- 删除空格时间0(n),空间o(1)
- Android中的长度单位详解