当互斥锁已被T1锁定,T2试图锁定它时,T2的过程是什么?
我认为大致如下:
-T2尝试锁定,失败,可能会自旋一段时间,然后调用yield…… -T2被执行几次,尝试锁定失败,放弃CPU调度…… -最终T1解锁,T2被调度执行并成功锁定互斥锁……
T1解锁是否明确向调度程序或其他线程发出信号表明互斥锁已解锁?还是只是解锁,并让调度程序在适当时候调度阻塞的线程(即调度程序没有阻塞线程的概念,并且不将它们视为特殊)?
我认为大致如下:
-T2尝试锁定,失败,可能会自旋一段时间,然后调用yield…… -T2被执行几次,尝试锁定失败,放弃CPU调度…… -最终T1解锁,T2被调度执行并成功锁定互斥锁……
T1解锁是否明确向调度程序或其他线程发出信号表明互斥锁已解锁?还是只是解锁,并让调度程序在适当时候调度阻塞的线程(即调度程序没有阻塞线程的概念,并且不将它们视为特殊)?