Int 值不打印?
Int Value does not print?
我使用和
创建了两个线程
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);
}
因此,如果我在 Position-1 使用计数器,它会将结果打印为 counter=9。但是我把它放在 Position-2 它不打印?
我已经更新了问题。
如果你在 while 循环中设置你的计数器,它会导致一个无限循环,你的 NSLog 将永远无法访问。将你的计数器保持在位置 1。
您的代码中有 2 个严重错误:
您有两个执行线程操作同一个全局变量。一个线程将践踏另一个线程使用的变量。例如,线程 #1 可能能够将 counter
变为 1
,然后线程 #2 将再次将其重置为 0
。确切的行为未定义。
你有一个无限循环(你在 while
语句中分配 counter = 0
),即使代码在单个线程中执行它也永远不会完成。
从根本上说,您的代码已损坏,我不确定我能说得更多。
我使用和
创建了两个线程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);
}
因此,如果我在 Position-1 使用计数器,它会将结果打印为 counter=9。但是我把它放在 Position-2 它不打印? 我已经更新了问题。
如果你在 while 循环中设置你的计数器,它会导致一个无限循环,你的 NSLog 将永远无法访问。将你的计数器保持在位置 1。
您的代码中有 2 个严重错误:
您有两个执行线程操作同一个全局变量。一个线程将践踏另一个线程使用的变量。例如,线程 #1 可能能够将
counter
变为1
,然后线程 #2 将再次将其重置为0
。确切的行为未定义。你有一个无限循环(你在
while
语句中分配counter = 0
),即使代码在单个线程中执行它也永远不会完成。
从根本上说,您的代码已损坏,我不确定我能说得更多。