Int Value不打印?

时间:2015-07-24 10:12:22

标签: ios static nsthread

我使用和

创建了两个线程
static int counter (global variable) ;
-(void)ViewDidLoad {
    [NSThread detachNewThreadSelector:@selector(handleTread:) toTarget:self withObject:nil];
    [NSThread detachNewThreadSelector:@selector(handleTread:) toTarget:self withObject:nil];
}

和选择器方法是

-(void)handleTread:(NSThread*)sender {
    counter =0; // Position-1
    while (counter<9) {
        counter =0; // Position-2
        counter++;
    }
    NSLog(@"Counter=%d",counter);
}

因此,如果我在位置-1使用计数器,则将结果打印为counter = 9。但我把它放在位置-2它不打印? 我已经更新了这个问题。

2 个答案:

答案 0 :(得分:2)

您的代码中有2个严重错误:

  1. 您有两个执行线程来操纵同一个全局变量。一个线程将践踏另一个线程使用的变量。例如,线程#1可能能够counter1,然后线程#2会再次将其重置为0。确切的行为是未定义的。

  2. 你有一个无限循环(你在counter = 0语句中分配while),即使代码是在一个线程中执行它永远不会完成。

  3. 从根本上说,您的代码已被破坏,我不确定是否可以对此进行更多说明。

答案 1 :(得分:0)

如果在while循环中设置计数器,它将导致无限循环,永远不会到达NSLog。将你的柜台保持在第1位。