首页 > 编程知识 正文

python线程锁,python 进程通信

时间:2023-05-05 10:14:01 阅读:61992 作者:1988

1 .进度线程是操作系统调度的最小单位,有自己的堆栈空间。 线程通信是指在共同操作多个线程共享的资源时,为了避免资源的争夺,相互通知自己的状态。 不同的线程(包括初始化数据段、未初始化数据段和堆内存段)共享同一全局内存空间,从而可以在线程之间轻松快速地共享全局或堆数据。 因为线程间通信主要用于数据同步,所以没有像进程通信那样的用于数据交换的机制。

2 .过程通信管道(Pipe )和有名管道(named pipe ) :管道可以用于有血缘关系的过程之间的通信,克服了有名管道对管道没有名字的限制,除了管道具有的功能外,也可以实现无血缘关系的过程之间的通信“信号”(Signal )信号是一种相对复杂的通信方法,用于通知进程发生了某些事件。 除了进程间通信外,进程还可以向进程自身发送信号。 linux除了Unix的初始信号语义函数sigal之外,还支持语义符合Posix.1标准的信号函数sigaction。 (实际上,该函数基于BSD,BSD为了实现可靠的信号机制和统一对外接口,用sigaction函数重新实现了signal函数。 ) ); 消息队列(消息队列)消息队列) :消息队列是消息的链表,包括Posix消息队列system V消息队列。 有足够权限将消息添加到队列中的进程,具有读取权限的进程可以读取队列中的消息。 消息队列克服了流量低、管道只能包含未格式化的字节流、缓冲区大小受限等缺点。 共享内存:允许多个进程访问同一内存区域。 是最快的IPC格式。 是为了其他通信机构的运行效率低而设计的。 经常与其他通信机制(如信号)结合使用以实现过程之间的同步和互斥。 信号(semaphore ) :主要作为进程之间以及同一进程的不同线程之间的同步手段。 套接字:一种更常见的进程间通信机制,可用于不同计算机之间的进程间通信。 最初由Unix系统的BSD分支开发,但现在一般可以移植到其他Unix系统。 Linux和System V变种支持套接字。 3 .线程同步互斥:确保一次只能访问共享资源的一个线程。 当锁定被占用时,尝试锁定的所有线程都将处于阻止状态。 释放CPU资源,从执行状态变为待机状态。 内核的计划决定了哪些等待线程在解除锁定时可以获取锁定。 读/写锁定:在写入模式下锁定,处于写入状态时,无论读/写,尝试锁定的线程都会被阻止,在读取状态下锁定,处于读取状态时为“读取”状态读取模式共享,写入模式互斥。 条件变量:可以将过程作为原子阻止,直到特定条件变为真。 条件测试在互斥锁的保护下进行。 条件变量总是与互斥锁一起使用。 旋转锁定:如果锁定被阻止,线程在循环中轮询而不阻止,并检查是否可以获得该锁定。 因为没有线程切换,所以没有切换开销,但是CPU的占用会浪费CPU资源。 因此,自旋锁适合于并行结构(多个处理器)和保持锁定的时间短、不希望在线程切换中产生开销的情况。 信号机制(Semaphore ) :包括无名线程信号和命名线程信号。

4 .参加讨论

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。