[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
本帖最后由 Gin_Q 于 2021-4-27 20:52 编辑

售票系统就是一个使用锁的列子!

python 事件锁挺好用
  1. import threading
  2. import time
  3. def fun(event_lock, tips):
  4.     while True:
  5.         event_lock.wait()
  6.         print(tips)
  7.         time.sleep(1)
  8.         
  9. if __name__ == "__main__":
  10.     event_lock = threading.Event()
  11.     event_lock.set()
  12.     t1 = threading.Thread(target = fun, args = (event_lock, "线程 1"), daemon = True)
  13.     t2 = threading.Thread(target = fun, args = (event_lock, "线程 2"), daemon = True)
  14.    
  15.     t1.start()
  16.     t2.start()
  17.    
  18.     input_str = ''
  19.     while True:
  20.         input_str = input("1: 暂定线程 2: 开始线程")
  21.         if input_str == "1":
  22.             event_lock.clear()
  23.         elif input_str == "2":
  24.             event_lock.set()
  25.     t1.join()
复制代码
1

评分人数

    • xczxczxcz: 这是队列,假多线程技术 + 1
QQ:1972544783

TOP

怎么说是队列呢? 他们是并行的!
QQ:1972544783

TOP

回复 7# 老刘1号


    太硬核了!
QQ:1972544783

TOP

回复 11# xczxczxcz


   不下高速公路就可以啦!你要访问大家共同访问的资源(收费站),这个就需要锁!
QQ:1972544783

TOP

回复 13# xczxczxcz


    线程本身是并行的,会占用cpu资源,当线程被锁住时,cpu资源将被释放。
C# 示例
  1. using System;
  2. using System.Threading;
  3. class Test
  4. {
  5.     static void Main()
  6.     {
  7.         int PoolSize = Environment.ProcessorCount; // 获取当前计算机上的处理器数。
  8.          
  9.         EventWaitHandle ewh = new EventWaitHandle(false, EventResetMode.ManualReset); // 事件锁
  10.         
  11.         Thread[] ThreadPool = new Thread[PoolSize];
  12.          
  13.         for (sbyte i=0; i<PoolSize; i++)
  14.         {
  15.             ThreadPool[i] = new Thread(Occupy);
  16.             ThreadPool[i].IsBackground = true;
  17.         }
  18.         for (sbyte i=0; i<PoolSize; i++)
  19.             ThreadPool[i].Start(ewh);
  20.          
  21.         while (true)
  22.         {
  23.             Console.Write("1 占用cpu资源\n2 释放cpu资源\n");
  24.             string input = Console.ReadLine();
  25.             if (input == "1")
  26.             {
  27.                 ewh.Set();
  28.             }
  29.             else if (input == "2")
  30.             {
  31.                 ewh.Reset();
  32.             }
  33.         }
  34.     }
  35.      
  36.     static void Occupy(object EventLock)
  37.     {
  38.         EventWaitHandle el = EventLock as EventWaitHandle;
  39.         while (true)
  40.         {
  41.             el.WaitOne();
  42.         }
  43.     }
  44. }
复制代码
QQ:1972544783

TOP

回复 15# xczxczxcz


    速度很快,爬这么快不怕封ip吗?
QQ:1972544783

TOP

回复 17# xczxczxcz


    很厉害。网络交互我不懂!
QQ:1972544783

TOP

回复 19# 523066680


    见笑了哈。。
QQ:1972544783

TOP

返回列表