如何避免系统阻塞

时间:2012-07-14 05:18:22

标签: objective-c macos

我使用下面的代码执行我的程序

for(int i=0;i<100000000000000000000;i++)
{
//dosomething
}

我希望在处理时让计算机仍然响应用户交互以避免系统阻塞。

2 个答案:

答案 0 :(得分:3)

您可以使用Grand Central Dispatch。这就像.NET中的BackgroundWorker / Task。 Ray Wenderlich也有很棒的教程。

例如:

dispatch_queue_t q = dispatch_get_global_queue(0, 0);
dispatch_queue_t main = dispatch_get_main_queue();
dispatch_async(q, ^{
    // long running database operation
    dispatch_async(main, ^{

   });
});

答案 1 :(得分:0)

用户界面在主应用程序线程上处理。你似乎要求的是一个多线程程序;在Mac OS X上有很多方法可以实现这一点,包括直接使用POSIX线程(pthread_create()等)。

更多信息: http://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/Multithreading/Introduction/Introduction.html%23//apple_ref/doc/uid/10000057i-CH1-SW1