高洛峰2017-04-28 09:07:18
スレッド同期は、複数のスレッドが同時に同じリソースにアクセスするため、同期アクセスによって引き起こされる一連の問題を解決する必要があります。
たとえば、2人がかごからリンゴを取り、1人がそれを取り、もう1人にそれを取らせても問題はありませんが、効率は高くありません。 (totalTime = timeOfA + timeOfB)
あなたが1つ、私が1つを同時に取らせると効率的ですが、二人ともリンゴを掴むと問題が発生します。 A がリンゴを受け取るとき、B が最初に待ち、次に A がリンゴを受け取るまで待ってから B がリンゴを受け取ります。あるいは、A は A の側にあるもののみを取ることができ、B は B の側にあるもののみを取ることができます。これで問題は解決します。
iOSで最も重要な方法は、アクセス中はロックし、アクセス完了後にロックを解除することです。どのようなロックを追加し、どのようにロックするかについては、インターネット上の多くの情報が非常に詳細に説明されています。
为情所困2017-04-28 09:07:18
同期
非同期
スレッド同期
は異なる概念です同步
异步
线程同步
,是不同的概念
接楼上同学的例子
你拿一个苹果,然后我拿一个苹果, 这叫同步
执行
你和我同时去拿苹果,这叫两个线程异步
执行,这里为了实现异步
,使用了多线程
的手段,你和我各属于一个线程
然后就会出现问题了,如果你和我伸手拿了同一个苹果怎么办? 这个时候就需要你和我进行线程同步
同期
実行と呼ばれます。 と呼ばれます。非同期
実行。ここでは 非同期
を実現するために、マルチスレッド
が使用されます。あなたと私はそれぞれ 1 つのスレッドに属します。スレッド同期
を行う必要があります。たとえば、最初にバスケットを見た人がそのバスケットをロックし、他の人を待たせ、それを取った後にロックを解除します#🎜🎜#ringa_lee2017-04-28 09:07:18
多くの人は、非同期がマルチスレッドを意味すると考えていますが、これは間違いです。
スレッドはコードであり、CPU が実行する必要があるコードです。2 つのスレッド コードを一緒に実行すると、ブロックされていないように感じられます。しかし、それはまだコードです。 CPU はまだそこで待機しています。
非同期は主に io、ファイル io、ネットワーク リクエスト io に使用されます。同期 io がプロセスをブロックすることを望まないため、応答機能を向上させる非同期の方法があります。非同期を使用するには、オペレーティング システムがイベント委任をサブスクライブする必要があります。クロージャ関数など スレッドについては同じことが言えません。
ハードウェアについて少しでも知っていれば、中断を感じることができます。
例として、みんなが話しているリンゴを考えてみましょう...
非同期とは、コンピュータにリンゴを取得するように指示することを意味します。
コンピューターは、この機能に応答するために Apple ハードウェアを使用します。 CPUと何か関係があるのでしょうか?もうない。 CPU に遅延は生じません。
Appleがネットワークからリクエストした場合、Appleを取得するのはネットワークカードです