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之IDE工具介绍及数据备份(数据库导入,导出)
    jmeter test Fragment
    python创建虚拟环境
    遇到的问题
    文件操作
    六、迭代器与生成器
    五、IO编程
    简单的例子
    四、函数
    三、集合与格式化
  • 原文地址:https://www.cnblogs.com/h-tao/p/4843656.html
Copyright © 2011-2022 走看看