多线程的sleep,静态链接
来源:互联网 发布:画k线图软件 编辑:程序博客网 时间:2024/06/05 11:58
利用pthread库做多线程编程,如果使用简单的sleep系统调用,如果对pthread的实现不是很清楚的话,或者linux内核的sleep系统调用和pthread库配合的不是很好的话,在线程里面进行sleep系统调用的话,可能导致所有的线程休眠。或者在main函数里面调用sleep,在特定版本的linux内核中可能导致程序所有线程都休眠。这可能是不希望的,所以可以用异步IO实现“安全”的线程休眠。具体用select实现即可:
#include <sys/time.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdio.h>
int mySleep(unsigned int sleepSecond)
{
struct timeval t_timeval;
t_timeval.tv_sec = sleepSecond;
t_timeval.tv_usec = 0;
select( 0, NULL, NULL, NULL, &t_timeval );
return 0;
}
这就可以绕过可能的“陷阱”。
在嵌入式应用里面,除去通用的库,出于空间的考虑,需要把一些程序进行静态链接,如果在实现sleep这个程序的时候,使用这个mySleep调用。进行静态链接的时候会产生出很大的可执行程序。
例如:
int main(int argc,char ** argv)
{
if(argc ==2)
{
int secNumber=0;
secNumber=atoi(argv[1]);
mySleep(secNumber);
}
else
{
printf("Usage:%s <second number>/n",argv[0]);
}
return 0;
}
进行:g++ -o sleep --static sleep.cpp
得到的sleep可执行程序超过了1M。
而使用传统的sleep系统调用编制sleep程序,在控制程序大小方面更好:
{
if(argc == 2)
{
sleep(atoi(argv[1]));
}
else
{
printf("Usage:%s <sec Number>/n",argv[0]);
}
return 0;
}
进行:gcc -o sleep --static sleep.c
得到的sleep可执行程序仅仅400K左右。
很好。
- 多线程的sleep,静态链接
- 由sleep()谈多线程中的静态方法
- 清理mysql的sleep链接
- 多线程的sleep和wait
- 多线程中Sleep的作用
- 多线程的wait()和sleep()
- 多线程sleep
- 多线程----sleep
- 多线程中sleep()和wait()的区别
- java多线程 sleep()和wait()的区别
- java多线程 sleep()和wait()的区别
- java多线程 sleep()和wait()的区别
- java多线程 sleep()和wait()的区别
- java多线程 sleep()和wait()的区别
- java多线程 sleep()和wait()的区别
- java多线程 sleep()和wait()的区别
- java多线程 sleep()和wait()的区别
- java多线程 sleep()和wait()的区别
- S3C2440A驱动RGB接口TFT LCD的研究(转载)
- 工作流管理系统概述
- Linux中Top命令结果的各个项目的含义
- 敏捷开发与Scrum Frameworks
- oracle的数据导入到pgsql数据库中的测试
- 多线程的sleep,静态链接
- oracle数据类型
- 系统设计说明书(架构、概要、详细)目录结构
- 泉州市华顺(中国)网络有限公司 游戏程序员C++ (5名)
- 利用浏览器小工具查看http header
- zuoji v3v4
- How To Change The Aging Report Output To PDF Format
- 四类设计人员
- 测试用例优先级与三轮测试的结合