添加互斥锁

This commit is contained in:
ranchuan
2024-10-09 19:31:59 +08:00
parent 5d172c8b79
commit 49c64b4426
2 changed files with 14 additions and 1 deletions

View File

@@ -30,6 +30,7 @@ _local_server=None
_local_client_lock = threading.Lock()
@@ -46,19 +47,25 @@ def send_to(ip,port,data:bytearray):
# 关闭指定地址的端口 # 关闭指定地址的端口
def close(ip,port): def close(ip,port):
global _local_client global _local_client
global _local_client_lock
_local_client_lock.acquire()
for item in _local_client: for item in _local_client:
if(item[1]==ip and item[2]==port): if(item[1]==ip and item[2]==port):
myprint(f'断开连接 {ip}:{port}') myprint(f'断开连接 {ip}:{port}')
item[0].close() item[0].close()
_local_client.remove(item) _local_client.remove(item)
break break
_local_client_lock.release()
# 关闭所有 # 关闭所有
def close_all(): def close_all():
global _local_client global _local_client
global _local_client_lock
_local_client_lock.acquire()
for item in _local_client: for item in _local_client:
item[0].close() item[0].close()
_local_client=[] _local_client=[]
_local_client_lock.release()
myprint('连接列表已清空') myprint('连接列表已清空')

View File

@@ -38,7 +38,7 @@ LOCAL_SERVER_IP = ("192.168.1.40",22)
_local_client_lock = threading.Lock()
# 发送数据到指定ip地址和端口 # 发送数据到指定ip地址和端口
@@ -51,6 +51,8 @@ def send_to(ip,port,data:bytearray):
# 关闭指定地址的端口 # 关闭指定地址的端口
def close(ip,port): def close(ip,port):
global _local_client global _local_client
global _local_client_lock
_local_client_lock.acquire()
for item in _local_client: for item in _local_client:
if(item[1]==ip and item[2]==port): if(item[1]==ip and item[2]==port):
myprint(f"断开连接 {ip}:{port}") myprint(f"断开连接 {ip}:{port}")
@@ -58,14 +60,18 @@ def close(ip,port):
# 删除已被关闭的条目 # 删除已被关闭的条目
_local_client.remove(item) _local_client.remove(item)
break break
_local_client_lock.release()
# 关闭所有 # 关闭所有
def close_all(): def close_all():
global _local_client global _local_client
global _local_client_lock
_local_client_lock.acquire()
for item in _local_client: for item in _local_client:
item[0].close() item[0].close()
# 关闭端口之后把列表置空 # 关闭端口之后把列表置空
_local_client=[] _local_client=[]
_local_client_lock.release()
myprint('连接列表已清空') myprint('连接列表已清空')