Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commit 09fa12c

Browse files
author
zhangyanqiang
committed
Site updated: 2018年09月21日 14:09:06
1 parent f075f62 commit 09fa12c

File tree

4 files changed

+14
-121
lines changed

4 files changed

+14
-121
lines changed

‎2018/09/21/多线程之NSThead/index.html

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@
8787
<meta property="og:site_name" content="Richard-zhang-iOS的博客">
8888
<meta property="og:description" content="iOS开发中实现多线程的方式主要包括以下一个方面,我们会通过后续的文章一一介绍他们 pthread: 跨平台**,适用于多种操作系统,可移植性强,是一套纯C语言的通用API,且线程的生命周期需要程序员自己管理,使用难度较大,所以在实际开发中通常不使用。 NSThread: 基于OC语言的API,使得其简单易用,面向对象操作。线程的声明周期由程序员管理,在实际开发中偶尔使用,底层实现是基于pthre">
8989
<meta property="og:locale" content="zh-Hans">
90-
<meta property="og:updated_time" content="2018-09-21T02:49:07.849Z">
90+
<meta property="og:updated_time" content="2018-09-21T06:08:52.362Z">
9191
<meta name="twitter:card" content="summary">
9292
<meta name="twitter:title" content="多线程之NSThread">
9393
<meta name="twitter:description" content="iOS开发中实现多线程的方式主要包括以下一个方面,我们会通过后续的文章一一介绍他们 pthread: 跨平台**,适用于多种操作系统,可移植性强,是一套纯C语言的通用API,且线程的生命周期需要程序员自己管理,使用难度较大,所以在实际开发中通常不使用。 NSThread: 基于OC语言的API,使得其简单易用,面向对象操作。线程的声明周期由程序员管理,在实际开发中偶尔使用,底层实现是基于pthre">
@@ -358,6 +358,7 @@ <h1 class="post-title" itemprop="name headline">多线程之NSThread</h1>
358358
<p><strong><a href="https://richard-zhang-ios.github.io/2018/09/20/多线程之GCD/" target="_blank" rel="noopener">GCD</a></strong>: 基于C语言的API,充分利用设备的多核,旨在替换NSThread等线程技术。线程的生命周期由系统自动管理,在实际开发中经常使用。</p>
359359
<p><strong><a href="https://richard-zhang-ios.github.io/2018/09/20/多线程之NSOperation/" target="_blank" rel="noopener">NSOperation</a></strong>: 基于OC语言API,底层是GCD,增加了一些更加简单易用的功能,使用更加面向对象。线程生命周期由系统自动管理,在实际开发中经常使用。</p>
360360
<p>本文详细介绍了pthread和NSThread在iOS中的使用,主要包括以下几个方面</p>
361+
<a id="more"></a>
361362
<ul>
362363
<li>pthread<ul>
363364
<li>pthread 简介</li>

‎2018/09/21/多线程之锁机制/index.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888
<meta property="og:description" content="之前的文章我们详细介绍了iOS中使用多线程的方式,但是一直没有细致的讲解如何在多线程的情况下保证线程的安全,今天我们就介绍下iOS中多线程中保证线程安全的方式之一锁机制 在具体说这些锁之前,先来说几个概念定义:(参考维基百科) 临界区:指的是一块对公共资源进行访问的代码,并非一种机制或是算法。 自旋锁:是用于多线程同步的一种锁,线程反复检查锁变量是否可用。由于线程在这一过程中保持执行,因此是一种">
8989
<meta property="og:locale" content="zh-Hans">
9090
<meta property="og:image" content="http://cc.cocimg.com/api/uploads//20180301/1519868419367913.png">
91-
<meta property="og:updated_time" content="2018-09-21T04:06:52.143Z">
91+
<meta property="og:updated_time" content="2018-09-21T06:08:33.889Z">
9292
<meta name="twitter:card" content="summary">
9393
<meta name="twitter:title" content="多线程之锁同步">
9494
<meta name="twitter:description" content="之前的文章我们详细介绍了iOS中使用多线程的方式,但是一直没有细致的讲解如何在多线程的情况下保证线程的安全,今天我们就介绍下iOS中多线程中保证线程安全的方式之一锁机制 在具体说这些锁之前,先来说几个概念定义:(参考维基百科) 临界区:指的是一块对公共资源进行访问的代码,并非一种机制或是算法。 自旋锁:是用于多线程同步的一种锁,线程反复检查锁变量是否可用。由于线程在这一过程中保持执行,因此是一种">
@@ -365,6 +365,7 @@ <h1 class="post-title" itemprop="name headline">多线程之锁同步</h1>
365365
<li><strong>条件锁:</strong>就是条件变量,当进程的某些资源要求不满足时就进入休眠,也就是锁住了。当资源被分配到了,条件锁打开,进程继续运行。</li>
366366
</ol>
367367
<p>本文主要介绍以下11种锁的使用方式,对原理性质介绍较少,针对每种锁的工作机制,大家可以自行科普。</p>
368+
<a id="more"></a>
368369
<ul>
369370
<li>互斥锁<ul>
370371
<li>NSLock</li>
@@ -397,7 +398,7 @@ <h1 class="post-title" itemprop="name headline">多线程之锁同步</h1>
397398
</li>
398399
<li>性能对比</li>
399400
</ul>
400-
<aid="more"></a>
401+
<!-- more -->
401402
<h2 id="互斥锁"><a href="#互斥锁" class="headerlink" title="互斥锁"></a>互斥锁</h2><h3 id="NSLock"><a href="#NSLock" class="headerlink" title="NSLock"></a>NSLock</h3><p>NSLock:是Foundation框架中以对象形式暴露给开发者的一种锁,(Foundation框架同时提供了NSConditionLock,NSRecursiveLock,NSCondition)NSLock定义如下:</p>
402403
<figure class="highlight plain"><table><tr><td class="gutter"><pre><span class="line">1</span><br><span class="line">2</span><br><span class="line">3</span><br><span class="line">4</span><br><span class="line">5</span><br><span class="line">6</span><br><span class="line">7</span><br><span class="line">8</span><br><span class="line">9</span><br><span class="line">10</span><br><span class="line">11</span><br><span class="line">12</span><br></pre></td><td class="code"><pre><span class="line">@protocol NSLocking</span><br><span class="line">- (void)lock;</span><br><span class="line">- (void)unlock;</span><br><span class="line">@end</span><br><span class="line">@interface NSLock : NSObject &#123;</span><br><span class="line">@private</span><br><span class="line"> void *_priv;</span><br><span class="line">&#125;</span><br><span class="line">- (BOOL)tryLock;</span><br><span class="line">- (BOOL)lockBeforeDate:(NSDate *)limit;</span><br><span class="line">@property (nullable, copy) NSString *name API_AVAILABLE(macos(10.5), ios(2.0), watchos(2.0), tvos(9.0));</span><br><span class="line">@end</span><br></pre></td></tr></table></figure>
403404
<p>tryLock 和 lock 方法都会请求加锁,唯一不同的是trylock在没有获得锁的时候可以继续做一些任务和处理。lockBeforeDate方法也比较简单,就是在limit时间点之前获得锁,没有拿到返回NO。</p>

‎css/main.css

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1823,7 +1823,7 @@ pre .javascript .function {
18231823
width: 4px;
18241824
height: 4px;
18251825
border-radius: 50%;
1826-
background: #ffba3e;
1826+
background: #8c9dcc;
18271827
}
18281828
.links-of-blogroll {
18291829
font-size: 13px;

0 commit comments

Comments
(0)

AltStyle によって変換されたページ (->オリジナル) /