上一页 1 ··· 45 46 47 48 49 50 51 52 53 ··· 75 下一页
摘要: 5)线程私有数据 进程内的所有线程共享进程的数据空间,因此全局变量为所有线程所共有。但有时线程也需要保存自己的私有数据,这时可以创建线程私有数据(Thread-specific Date)TSD来解决。在线程内部,私有数据可以被各个函数访问,但对其他线程是屏蔽的。例如我们常见的变量errno,它返回标准的出错信息。它显然不能是一个局部变量,几乎每个函数都应该可以调用它;但它又不能是一个全局变量,否则在A线程里输出的很可能是B线程的出错信息。要实现诸如此类的变量,我们就必须使用线程数据。我们为每个线程数据创建一个键,它和这个键相关联,在各个线程里,都使用这个键来指代线程数据,但在不同的线程里,这 阅读全文
posted @ 2011-08-14 21:29 浪里飞 阅读(2865) 评论(0) 推荐(0) 编辑
摘要: (2)线程的分离与结合 在任何一个时间点上,线程是可结合的(joinable),或者是分离的(detached)。一个可结合的线程能够被其他线程收回其资源和杀死;在被其他线程回收之前,它的存储器资源(如栈)是不释放的。相反,一个分离的线程是不能被其他线程回收或杀死的,它的存储器资源在它终止时由系统自动释放。 线程的分离状态决定一个线程以什么样的方式来终止自己。在上面的例子中,我们采用了线程的默认... 阅读全文
posted @ 2011-08-14 21:28 浪里飞 阅读(10597) 评论(1) 推荐(5) 编辑
摘要: 说明:以下内容,根据参考中【1~6】内容整理而得。 一、基本概念 1、线程是计算机中独立运行的最小单位。进程是分配资源的单位。 2、为什么使用多线程? (1)启动一个新的进程必须分配给它独立的地址空间,建立众多的数据表来维护它的代码段、堆栈段和数据段,这是一种"昂贵"的多任务工作方式。而运行于一个进程中的多个线程,它们彼此之间使用相同的地址空间,共享大部分数据,启动一个线程所花费的空间远远小于启动... 阅读全文
posted @ 2011-08-14 21:27 浪里飞 阅读(1927) 评论(2) 推荐(1) 编辑
摘要: 一. 常用编译命令选项 假设源程序文件名为test.c。 1. 无选项编译链接 用法:#gcc test.c 作用:将test.c预处理、汇编、编译并链接形成可执行文件。这里未指定输出文件,默认输出为a.out。 2. 选项 -o 用法:#gcc test.c -o test 作用:将test.c预处理、汇编、编译并链接形成可执行文件test。-o选项用来指定输出文件的文件名。 3. 选项 -E... 阅读全文
posted @ 2011-08-14 16:49 浪里飞 阅读(763) 评论(0) 推荐(0) 编辑
摘要: 一、什么是CDN? CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最... 阅读全文
posted @ 2011-08-12 20:44 浪里飞 阅读(1817) 评论(0) 推荐(0) 编辑
摘要: 数字与字符的相互转换,通常情况下atoi,itoa,但是,这有两个问题,一是: (1)只能是int与char的转换,也就是说,数据最大值应当小于2G。 (2)在linux中,没有itoa。 那么如何解决数据最大值大于2G,及大于2G后数值型数据与字符间的转换呢? (1)从数值数据转换成字符型数据,sprintf unsigned int low = 4294967295; sprintf(lin... 阅读全文
posted @ 2011-08-12 14:40 浪里飞 阅读(637) 评论(1) 推荐(0) 编辑
摘要: 8)objects = *.o 通配符同样可以用在变量中。并不是说[*.o]会展开,objects的值就是“*.o”。Makefile 中的变量其实就是 C/C++中的宏。如果你要让通配符在变量中展开,也就是让 objects 的值是所有[.o]的文件名的集合,那么,你可以这样:objects := $(wildcard *.o),这种用法由关键字“wildcard”指出。9)通过makefile编译,自动推导,如果发现当前的文件没有做过更新,则不会编译,只编译更新过了的。附:1、预定义变量选项预定义变量含义$* 不包含扩展名的目标文件名称。$+所有的依赖文件,以空格分开,并以出现的先后为序, 阅读全文
posted @ 2011-08-12 14:17 浪里飞 阅读(1451) 评论(0) 推荐(0) 编辑
摘要: 4)变量的引入变量的引入和应用:CC=gccHD=-I headersSC=-c $<OBJ=-o $@bin/st_work : obj/main.o obj/st_work.o obj/fun.o gcc $^ -o $@ (命令一定要用以Tab开头)obj/st_work.o : sources/st_work.c $(CC) $(HD) $(SC) $(OBJ)obj/main.o : sources/main.c$(CC) $(HD) $(SC) $(OBJ)obj/fun.o : sources/fun.c$(CC) $(HD) $(SC) $(OBJ)clean:rm -f 阅读全文
posted @ 2011-08-12 14:16 浪里飞 阅读(1946) 评论(0) 推荐(0) 编辑
摘要: 1、make是一个解释makefile中指令的命令工具。Make工具最主要也是最基本的功能就是通过makefile文件来描述源程序之间的相互关系并自动维护编译工作。而makefile 文件需要按照某种语法进行编写,文件中需要说明如何编译各个源文件并连接生成可执行文件,并要求定义源文件之间的依赖关系。Makefile 里主要包含了五种类型的语句/行:显式规则、隐式规则、变量定义、文件指示和注释。make命令格式:make [-f Makefile] [option] [target]2、编译和链接规则1)如果这个工程没有编译过,那么我们的所有C文件都要编译并被链接。2)如果这个工程的某几个C文件 阅读全文
posted @ 2011-08-12 14:14 浪里飞 阅读(13819) 评论(0) 推荐(0) 编辑
摘要: 首先要明确一点:当我们调用new表达式时,做两件事:使用operator new()分配内存,然后调用构造函数。在delete中调用析构函数,然后用operator delete()释放内存。大家都知道new对应于delete,new[]对应于delete[]。可以实际应用中,倒底有什么区别?现在作一说明。1、内置类型如char *pc = new[10];对于内置类型来说,可以认为delete与delete[]没有区别。使用new[]分配的内存,同样可以通过delete来释放。这是因为,pc 指针所指的前一个字节保存了分配数据的大小,如下所示:[10][0][0][0][0][0][0][. 阅读全文
posted @ 2011-08-05 16:57 浪里飞 阅读(464) 评论(2) 推荐(0) 编辑
上一页 1 ··· 45 46 47 48 49 50 51 52 53 ··· 75 下一页