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];//解锁 }

  • 相关阅读:
    npm包发布过程
    react树状组件
    js数据结构处理--------扁平化数组处理为树结构数据
    js数据结构处理--------树结构数据遍历
    JS fetch
    JS promise
    JS 闭包
    JS 异步回调
    三角形加正方形
    webAPI的分类
  • 原文地址:https://www.cnblogs.com/h-tao/p/4843656.html
Copyright © 2011-2022 走看看