首页 > 其他 > 详细

Mac操作线程的接口

时间:2014-02-18 15:47:04      阅读:391      评论:0      收藏:0      [点我收藏+]

参考Cocoa文档Threading Programming Guide

1,创建线程的方式

  • NSThread
    • 直接创建线程的接口 + (void)detachNewThreadSelector:(SEL)aSelector toTarget:(id)aTarget withObject:(id)anArgument。
    • Create a new NSThread object and call its start method或者Override NSThread‘s main method using subclassing。
    • 如果有了NSThread的Obj,可以使用NSOject的performSelector:onThread:withObject:waitUntilDone:方法执行任务,但前提的这个Thread必须有RunLoop。
  • POSIX API
    • pthread_create
  • NSObject
    • performSelectorInBackground:withObject:

2,线程同步的工具

  • 原子操作

    优点是不会阻塞线程执行,性能好。缺点是只能对简单的数据类型使用。

    可以使用锁来保护一段代码的关键区,在同一时间只能有一个线程进入关键区,通常关键区在操作一些多线程共享的资源。

    • 互斥锁(mutex)
      • NSLock 两个有用的方法:trylock lockBeforeDate
      • @synchronized(obj)

    • 递归锁(recursive lock)同一个线程可以获取多次,但只有当锁为0时另外一个线程才能获得。
      • NSRecursiveLock
    • 读写锁(read-write lock)当读操作很多但写操作很少的能提高性能。只在POSIX线程中支持。
    • 分布式锁(distributed lock)进程级别的锁,只报告状态,不阻塞进程。
      • NSDistributedLock 使用文件系统实现。
    • 条件锁(NSConditionLock)
  • 条件

    条件是一种特别的锁,它用来保证操作执行的顺序

bubuko.com,布布扣
        [cocoaCondition lock];
        while (timeToDoWork <= 0)
        [cocoaCondition wait];
        timeToDoWork--;
        // Do real work here.
        [cocoaCondition unlock];            
bubuko.com,布布扣
bubuko.com,布布扣
        [cocoaCondition lock];
        timeToDoWork++;
        [cocoaCondition signal];
        [cocoaCondition unlock];
bubuko.com,布布扣

Mac操作线程的接口

原文:http://www.cnblogs.com/qzhu/p/3553770.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!