zoukankan      html  css  js  c++  java
  • 用 OC 写两个线程,对同一个变量 分别进行+/-操作

    1. //⾸首先创建⼀一个线程锁
      NSLock *_lock = [[NSLock alloc] init]; //创建两个⼯工作线程 访问同⼀一个资源 类的对象的变量_value

         [NSThread detachNewThreadSelector:@selector(thread1:)
      
    toTarget:self withObject:@(10)];
    

    [NSThread detachNewThreadSelector:@selector(thread2:) toTarget:self withObject:@(10)];
    }
    //第⼀一个⼯工作线程 中会调⽤用的函数
    - (void)thread1:(id)obj{

    //我们需要当前线程 对_value进⾏行 连续+10的操作 每次递增10 @autoreleasepool {

    int num = [obj intValue];
    [_lock lock];//加锁 修改之前加锁 for (int i = 0 ; i < num; i++) {

              _value += 10;
              NSLog(@"thread1_value:%d",_value);
              [NSThread sleepForTimeInterval:0.5];
    

    }

    page4image384

    [_lock unlock];//修改完毕要解锁 }

    }

    //第⼆二个线程中调⽤用的函数
    - (void)thread2:(id)obj{

       @autoreleasepool {
           int num = [obj intValue];
    

    [_lock lock];//加锁

           for (int i = 0 ; i < num; i++) {
              _value -= 10;
    
              NSLog(@"thread2_value:%d",_value);
           }
    

    [_lock unlock];//解锁 }

  • 相关阅读:
    mysql调优
    面试、。。。。
    StringBuffer 和 StringBuilder 的 3 个区别
    msql查询指定日期
    Windows 路由跟踪
    Xdebug配置
    ONVIF流媒体播放流程
    Windows 8 SP1 安装StockTrader 6.1
    使用log4c问题
    xcode插件安装
  • 原文地址:https://www.cnblogs.com/h-tao/p/4843656.html
Copyright © 2011-2022 走看看