死锁:是指两个或两个以上的进程(或线程)在执行过程中,因争夺资源而造成 的一种互相等待的现象,若无外力作用,它们都将无法推进下去。 产生死锁的必要条件: 1、互斥条件:所谓互斥就是进程在某一时间内独占资源。 2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 3、不剥夺条件:进 ...
分类:
其他好文 时间:
2020-06-21 15:34:07
阅读次数:
120
悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每 次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传 统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写 锁等,都是在做操作之前先上锁。再比如 Java 里面的同步原语 synchroniz ...
分类:
其他好文 时间:
2020-06-21 14:03:03
阅读次数:
67
使用共享变量的方式 在这种方式中,之所以引入共享变量,是因为该变量可以被多个执行相同任务的 线程用来作为是否中断的信号,通知中断线程的执行。 使用 interrupt 方法终止线程 如果一个线程由于等待某些事件的发生而被阻塞,又该怎样停止该线程呢?这种 情况经常会发生,比如当一个线程由于需要等候键盘 ...
分类:
编程语言 时间:
2020-06-21 13:45:51
阅读次数:
61
阻塞式方法是指程序会一直等待该方法完成期间不做其他事情,ServerSocket 的 accept()方法就是一直等待客户端连接。这里的阻塞是指调用结果返回之前,当前 线程会被挂起,直到得到结果之后才会返回。此外,还有异步和非阻塞式方法在 任务完成前就返回。 ...
分类:
其他好文 时间:
2020-06-21 12:17:39
阅读次数:
55
异步协程 wait()方法的作用 wait方法的参数只能是任务列表,作用:wait可以将任务列表中的每一个任务对象进行可挂起操作 挂起 可以让当前被挂起的任务对象交出CPU的使用权 实现异步的原理: 当任务列表被wait方法修饰且已经被注册到事件循环中后,loop就会先去执行第一个任务对象, 在执行 ...
分类:
编程语言 时间:
2020-06-21 09:25:39
阅读次数:
56
直接把注释写到代码中: 1 int 2 __pthread_mutex_lock (pthread_mutex_t *mutex) 3 { 4 unsigned int type = PTHREAD_MUTEX_TYPE_ELISION (mutex); 5 6 //安全检查 7 LIBC_PROB ...
分类:
其他好文 时间:
2020-06-20 21:54:01
阅读次数:
156
一、BlockingQueued BlockingQueued 队列使用 ReentrantLock 和 Condition(AQS实现)来实现的。Condition 只能用于独占模式。 条件队列中的节点永远不会被唤醒,一直阻塞者;要想唤醒,则需要把该节点放到CLH队列中,放入到CLH队列中才有机会 ...
分类:
其他好文 时间:
2020-06-20 19:41:21
阅读次数:
61
Java 中的 Semaphore 是一种新的同步类,它是一个计数信号。从概念上讲,从 概念上讲,信号量维护了一个许可集合。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release()添加一个许可,从而可能释放一个 正在阻塞的获取者。但是,不使用实际的许可对象, ...
分类:
编程语言 时间:
2020-06-20 19:21:10
阅读次数:
68
s32Ret = HI_MPI_VDEC_SendStream(s32ChnId, &stStream, 0); // 参数3 ,0 表示非阻塞输入 if ((HI_SUCCESS != s32Ret)) { printf("error type is 0x%#x", s32Ret); usleep ...
分类:
其他好文 时间:
2020-06-20 16:48:43
阅读次数:
135
CountDownLatch 1 前言 CountDownLatch是一种同步辅助工具类,它允许一个或多个线程等待,直到在其他线程中执行的一组操作完成为止。(源码分析基于JDK1.8) CountDownLatch需要用给定的闩锁计数count初始化。await方法使当前线程阻塞(每执行一次coun ...
分类:
其他好文 时间:
2020-06-19 14:10:10
阅读次数:
60