"""
多线程测试 - 验证线程级并发
"""
import sys
import os
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
import time
import tempfile
import os
from vools.task import TaskQueue, ThreadPool
from tests.test_functions import add, multiply
def test_threadpool():
"""测试多线程功能"""
print("=== 多线程测试 ===")
db_path = tempfile.mktemp(suffix='.db')
print(f"Database: {db_path}")
try:
queue = TaskQueue(db_path)
task_ids = []
for i in range(6):
task_id = queue.submit(add, i, i)
task_ids.append(task_id)
print(f"提交任务 {task_id}: {i} + {i}")
print("\n启动3个Worker线程...")
pool = ThreadPool(num_workers=3, db_path=db_path, poll_interval=0.1)
pool.start()
print("\n等待任务完成...")
for i, task_id in enumerate(task_ids):
try:
result = queue.get_result(task_id, timeout=30)
expected = i + i
status = "OK" if result == expected else "FAIL"
print(f"任务 {task_id}: {i} + {i} = {result} [{status}]")
assert result == expected, f"期望 {expected},实际 {result}"
except Exception as e:
print(f"任务 {task_id} 失败: {e}")
print("\n多线程测试通过!")
finally:
pool.stop()
try:
os.unlink(db_path)
os.unlink(db_path + '-wal')
os.unlink(db_path + '-shm')
except:
pass
if __name__ == '__main__':
test_threadpool()