小弟最近用linux做一个网络服务程序.使用每一个请求建一个线程的模式.使用: if(pthread_create(&tid,NULL,ThreadRec,(void *)&argIn2)) printf("create rec thread fail..\n"); 语句创建线程,使用:pthread_exit(NULL);return NULL; 结束线程. 服务运行一切顺利.使用 ps axms命令查看线程数目.随着用户连接与断开增减.一切正常. 问题是:当用户连接与断开过多.也就是曾经创建的线程达到一定数目.pthread_create返回失败.用户线程不能...
by Billchen28 - C/C++ - 2007-12-02 00:52:44 阅读(4671) 回复(6)
创建一个新进程, 测试系统上最大线程数限制(结果见 表一 ), 但是有下面几处不明白: 1. 线程栈大小在:[128KB, 16392KB] 区间内时, 该进程内所有线程占用"栈"内存平均在 3G 左右. 而我机器只有1G 物理内存(无交换分区). 2. 线程栈大小在:128KB, 64KB, 32KB之间由大到小变化时, 该进程内所有线程占用"栈"内存也会变化? 按理说 (ThreadStackSize * MaxThreads) 大体应为物理空间的常数倍. 哪位大牛指点指点迷津 ? ...
我的每个线程都要定时接收client的#define ALIVE *** 消息 ,到时间没接收到就认为client已经断线,close(fd).现在想用 sleep + 计数 或者alarm 但不知道sleep 和alarm 只作用于当前线程还是整个进程,
使用pthread时,在linux平台使用的是libpthread.a,但在OpenBSD下没有该库文件,在OpenBSD下则使用libc_r.a库,目前不太明白libpthread.a和libc_r.a是不是都是Posix标准的线程库,二者是否一样?
兄弟今天看到一篇文章,讲到在linux中创建线程是 创建进程的一种变形。实际上,线程并没有起到在别的操作系统中起到的作用。是这样吗?? 2.6以后的内核也是如此吗? 请师兄们指教!
比如: [code] #include "pthread.h" #define T_MAX 1000 void *th(void *); main() { int i=0; pthread_t tid[T_MAX]; while(i<=T_MAX){ if(pthread_create(&tid,NULL,th,NULL)!=0){ i++; //此时如何确定还有多少个仍活着的线程? } } } void *th(void *para) { pthread_detach(pthread_self()); printf("alived!\n"); pthread_exit(0); ...
现在有一个写好的线程库,用户态的静态库 先用GCC编译,再用AR生成.a文件 在这个线程库上跑程序,一旦涉及到READ(),WRITE()等系统调用的时候会产生错误,不一定每次都出错 分析问题主要是由于进行输入输出系统调用的时候会转入核心态,然后无法正确恢复现场所致 现想到一个解决方案是自己写一个头文件,让线程库调用这个头文件,而不是系统本身的头文件.让程序在分配的时间片内运行不中断... 不知道还有没有其它的方法能够解决类似的问...
书中说:子进程是通过拷贝父进程的地址空间来执行的. 而线程是通过共享程序代码来执行的,讲的通俗一点就是线程的相同的 代码会被执行几次.使用线程的好处是可以节省资源。 我没看懂,请知情的高手们不吝赐教!!