这两天看C,实在是因为太过抵制复习的内容了。不过还好,也算有些收获

<li>同一进程的各个线程之间

共享:程序代码 、全局变量、堆空间、栈空间、文件描述符等;

独享:线程ID、寄存器值、函数堆栈 、信号屏蔽字;

  • 在Linux内核实现上,线程实际上就是一个(精简版)轻量级的进程,因此线程和进程之间在CPU调度时是平等的。

一个程序包含两个完全不相干的功能,比如QQ一边实现IM通信功能。一边弹出广告。就可以用一个新线程来弹广告;

一个程序包含两个不同时进行的功能,比如在线音乐播放器。一个线程后台下载,一个线程前台播放。不过需要在两者之间建立某种通信机制(比如一个全局变量),用于前台的线程确定要播放的歌曲是否已经下载完成。

<li>sizeof关键字是一个运算符,不是函数或者宏!可以用于确定对象所占空间的大小。

当对象是某种数据类型,比如int、long等。 返回该类型数据所占的字节数;

当对象是某复合对象时,比如结构体、联合体、数组。返回该复合对象各个成员总共所占的 字节。尤其数组,返回每一个元素所占的字节和。

当对象是指针的引用时(*p),返回的是引用的对象所占的字节。

创建线程的方法:

这里的pthread函数的四个参数的含义分别是:

  • &tid,用于返回创建的线程号

  • NULL,线程的特殊属性,没有的话就设置为NULL

  • thread_func,线程体要执行的函数名

  • arg,传递给线程体函数的参数