Pthreads笔记

    1、一个线程以下列方式之一来终止:

    • 当顶层的线程例程返回时,线程会隐式地终止.
    • 通过调用pthread_exit函数,线程会显式的终止。如果主线程调用pthread_exit ,它会等待所有其他对等线程终止,然后再终止主线程和整个进程,返回值为thread_return.
    • 某个对等线程调用Unix的exit函数,该函数终止进程以及所有与该进程相关的线程.
    • 另一个对等线程通过以当前线程ID作为参数调用pthread_cancel函数终止当前线程.

    2、线程通过调用pthread_join函数等待其他线程终止.该函数会阻塞,直至要等待的线程终止 ,然后回收已终止线程占用的所有存储器资源.

    3、在任何一个时间点上,线程是可结合的(detached)或者分离的(detached).一个可结合的线程能够被其他线程收回其资源和杀死.在被其他线程回收之前,它的存储器资源(例如栈)是没有被释放的.相反,一个分离的线程是不能被其他线程回收和杀死的,它的存储器资源在它终止时由系统自动释放.

    4、默认情况下,线程被创建成可结合的.为了避免存储器泄露,每个可结合的线程都应该要么被其他线程显式地收回,要么通过调用pthread_detach函数被分离.线程能够通过以pthread_self()为参数的pthread_detach调用来分离他们自己.

    5、从一个程序员的角度来看,线程很有吸引力的一个方面就是,多个线程很容易共享相同的程序变量.

    6、我们说一个变量是共享的,当且仅当它的一个实例被一个以上的线程引用.

    7、共享变量是十分方便的,但是它们也引入了同步错误(synchronization error)的可能性.

    8、一般而言,你没有办法预测操作系统是否将为你的线程选择一个正确的顺序.

    9、信号量提供了一种很方便的方法来确保对共享变量的互斥访问.其基本思想是是,将每个共享变量(或者一组相关的共享变量)与一个信号量s(初始为1)联系起来,然后用P(s)和V(s)操作将相应的临界区包围起来.以这种方式来保护共享变量的信号量叫做二元信号量(binary semaphore),因为它的值总是0或者1.以提供互斥为目的的二元信号量常常也称为互斥锁(mutex).

    10、进度图给了我们一种较好的方法,将在单处理器上的并发程序执行可视化,也帮助我们理解为什么需要同步.然后,它们也有局限性,特别是对于在多处理器上的并发执行,在多处理器上一组CPU/高速缓存对共享同一个主存.多处理器的工作方式是进度图不能解释的.

    11、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值