Listen(backlog)数值代表的含义? 监听变主动为被动,backlog指定最多允许多少个客户连接到服务器。它的值至少为1。收到连接请求后,这些请求需要排队,如果队列满,就拒绝请求。请注意,最大限制是取决于操作系统,Ubuntu上默认是128 TCP服务端recv解堵塞的两种方式?1、收到客户端发送的数据 2、客户端关闭了套接字 可以通过判断收到数据的长度来判断客户端是否下线,长度为0代表已下线。 什么是多任务?简单地说,就是操作系统可以同时运行多个任务。实现多任务有多种方式,线程、进程、协程。 并行和并发的区别?并发:指的是任务数多余cpu核数,通过操作系统的各种任务调度算法,实现用多个任务“一起”执行(实际上总有一些任务不在执行,因为切换任务的速度相当快,看上去一起执行而已) 并行:指的是任务数小于等于cpu核数,即任务真的是一起执行的 真的多任务叫并行,假的多任务叫并发。 什么是线程?可以简单理解为同一进程中有多个计数器,每个线程的执行时间不确定,而每个进程的时间片相等,线程是操作系统调度执行的最小单位 线程的创建步骤Import threading # 创建一个线程对象 t1 = threading.Thread(target=func_name, args=(num,), name=”子线程名字”) # 创建一个线程并启动 t1.start() # 等待子线程执行完毕之后再继续向下执行主线程 t1.join() 备注:主线程会等待子线程结束之后才会结束,主线程一死,子线程也会死。线程的调度是随机的,并没有先后顺序。 枚举函数enumerate的用法enumerate()是python的内置函数,在字典上是枚举、列举的意思。用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。通过threading.enumerate()就可以获取线程列表。 互斥锁的运用由于多线程之间共享全局变量就会导致出现资源竞争的问题,为了避免这种竞争出现,利用互斥锁可以实现线程同步。 # 创建锁 Mutex = threading.Lock() # 加锁 Mutex.acquire() # 释放锁 Mutex.release() 什么是死锁?在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁,尽管死锁很少发生,但一旦发生就会造成应用的停止响应。 什么是进程?程序是静态的,当程序运行起来就叫做进程。是操作系统分配资源的基本单元。
|