最近,我开始学习使用C#中的任务并行库进行并行编程,我读到SpinLock会浪费CPU周期,并且会一直旋转直到锁被获取。此外,在比较方法: Thread.Sleep和Thread.SpinUntil时,我发现Thread.sleep会释放调度器,以便调度器可以调度其他线程。这是否也适用于锁、监视器、互斥和互锁?当lock、Monitor、Mutex、Interlocked正在等待进入临界区时,CLR是否允许调度程序调度其他线程?
发布于 2020-07-09 13:57:21
很难理解你的问题。我试着这样做:
我不知道你说的调度程序是什么意思。线程一直运行,直到它们以某种方式被锁定。只有一个线程可以获得相同的锁。当您创建自己的线程时,它们由操作系统(AFAIK)调度。当您使用线程池时,它们被安排在那里。
https://stackoverflow.com/questions/62807960
复制相似问题