Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux

对Linux中多线程编程中pthread_join的理解

对Linux中多线程编程中pthread_join的理解

在Linux中,默认情况下是在一个线程被创建后,必须使用此函数对创建的线程进行资源回收,但是可以设置Threads attributes来设置当一个线程结束时,直接回收此线程所占用的系统资源,详细资料查看Threads attributes。其实在Linux中,新建的线程并不是在原先的进程中,而是系统通过一个系统调用clone()。该系统copy了一个和原先进程完全一样的进程,并在这个进程中执行线程函数。不过这个copy过程和fork不一样。 copy后的...
Linux网络编程中的pol和epolll函数总结

Linux网络编程中的pol和epolll函数总结

poll()函数:这个函数是某些Unix系统提供的用于执行与select()函数同等功能的函数,下面是这个函数的声明:#include <poll.h>int poll(struct pollfd fds[], nfds_t nfds, int timeout);参数说明:fds:是一个struct pollfd结构类型的数组,用于存放需要检测其状态的Socket描述符;每当调用这个函数之后,系统不会清空这个数组,操作起来比较方便;特别是对于s...
C/C++中char* 与char []定义的区别

C/C++中char* 与char []定义的区别

C/C++初学者很可能会以为这两个是一样的,其实如果不需要去修改字符串的话,那它们的效果的确是一样的。那它们的区别到底在哪儿呢?char* s1="abc"; s1是一个指针,这个指针可以被修改,它可以指向新的地址。现在它指向的是字符串常量“abc”,字符串常量存储在constant section里,不可被修改。char s2[10]="abc"; s2是数组指针,指针指向的位置就是数组的第一个元素所在的位置,一经分配是不能被修改...
使用 C++ 的 StringBuilder 提升 4350% 的性能

使用 C++ 的 StringBuilder 提升 4350% 的性能

介绍经常出现客户端打电话抱怨说:你们的程序慢如蜗牛。你开始检查可能的疑点:文件IO,数据库访问速度,甚至查看web服务。 但是这些可能的疑点都很正常,一点问题都没有。你使用最顺手的性能分析工具分析,发现瓶颈在于一个小函数,这个函数的作用是将一个长的字符串链表写到一文件中。你对这个函数做了如下优化:将所有的小字符串连接成一个长的字符串,执行一次文件写入操作,避免成千上万次的小字符串写文件操作。这个优化只做对了一半。你先测试大字符串写文件的速度,发现快如闪电。...
Linux下可执行程序调试信息的分离及release程序的调试

Linux下可执行程序调试信息的分离及release程序的调试

前两天在群里看到在讨论如何把debug版中的符号表加到release版本中,觉得这个非常有用,所以学习一下。使用的工具是objcopy。如果要生成单独的调试信息文件,命令如下:objcopy –only-keep-debug foo foo.dbg如果要去除调试信息(还可以使用strip命令),命令如下:objcopy --only-keep-debug foo foo.dbg如果要添加调试信息文件链接,命令如下:objcopy --add-g...
探究Linux下参数传递及查看和修改方法

探究Linux下参数传递及查看和修改方法

X86-64下有16个64位寄存器,其中%rdi、%rsi、%rdx,%rcx、%r8、%r9用作传递函数参数,分别对应第1个参数、第2个参数直到第6个参数,如下图所示(图片来自网络):如果函数的参数个数超过6个,则超过的参数直接使用栈来传递。在被调用函数执行前,会先将寄存器中的参数压入堆栈,之后的访问会通过栈寄存器加上偏移位置来访问。下面我们结合程序及其反汇编的结果来看一看。相关阅读:MIPS架构UBOOT和Linux参数传递 http://www.li...
<< 1971 1972 1973 1974 1975 1976 1977 1978 1979 1980 >>