iOS进阶之面试题

iOS中的读写安全方案

2019-02-17  本文已影响20人  小小小蚍蜉

思考如何实现以下场景

同一时间,只能有1个线程进行写的操作

同一时间,允许有多个线程进行读的操作

同一时间,不允许既有写的操作,又有读的操作

上面的场景就是典型的“多读单写”,经常用于文件等数据的读写操作,iOS中的实现方案有:

1,pthread_rwlock读写锁,pthread_rwlock等待锁的线程会进入休眠,

用法:

pthread_rwlock_t lock;

pthread_rwlock_init(&_lock,NULL);

- (void)read {

    pthread_rwlock_rdlock(&_lock);

    //coding here...

    pthread_rwlock_unlock(&_lock);

}

- (void)write

{

    pthread_rwlock_wrlock(&_lock);

// coding here

    pthread_rwlock_unlock(&_lock);

}

- (void)dealloc

{

    pthread_rwlock_destroy(&_lock);

}

2,dispatch_barrier_async:异步栅栏调用,此方法传入的并发队列必须是自己通过dispatch_queue_cretate创建的

上一篇下一篇

猜你喜欢

热点阅读