objective-c - 线程同步和异步的区别?IOS中如何实现多线程的同步?
PHP中文网
PHP中文网 2017-04-28 09:05:18
0
3
504

这个关于线程的问题怎么实现?

PHP中文网
PHP中文网

认证0级讲师

répondre à tous(3)
小葫芦

Laissez-moi vous dire ma propre compréhension. Je ne la comprends pas profondément. Veuillez me corriger si je me trompe.

La synchronisation des threads se produit sous multi-threading. Plusieurs threads accèdent à la même ressource en même temps Afin de garantir un accès sûr et efficace, il est nécessaire de résoudre une série de problèmes causés par l'accès synchrone.
Par exemple, deux personnes prennent des pommes dans un panier. Si l'une les prend et laisse ensuite l'autre les prendre, il n'y aura pas de problème, mais l'efficacité ne sera pas élevée. (totalTime = timeOfA + timeOfB)
Si vous les laissez prendre en même temps, vous en prenez une et j'en prends une, ce sera plus efficace, mais il y aura un problème si les deux personnes attrapent une pomme, qui. devrait l'obtenir ? À ce stade, vous pouvez Il existe plusieurs méthodes. Lorsque A prend la pomme, B attend d'abord et attend que A obtienne la pomme avant que B la prenne. Ou bien A ne peut prendre que ce qui est du côté de A, et B ne peut prendre que ce qui est du côté de B. Cela résoudra le problème.
La méthode principale sur iOS consiste à le verrouiller pendant l'accès et à le déverrouiller une fois l'accès terminé. Quant aux verrous à ajouter et à la manière de les verrouiller, de nombreuses informations sur Internet sont très détaillées.

为情所困

同步 异步 线程同步, sont des concepts différents

Exemple de récupération de camarades de classe à l'étage

Vous prenez une pomme, puis je prends une pomme. C'est ce qu'on appelle 同步 exécution
Vous et moi prenons la pomme en même temps. C'est ce qu'on appelle deux fils 异步 exécution. implémenter 异步 ici, nous utilisons 多线程 signifie que vous et moi appartenons chacun à un fil de discussion
Ensuite, il y aura un problème, et si vous et moi attrapions la même pomme ? À ce moment-là, vous et moi devons 线程同步, par exemple : celui qui verra le panier en premier verrouillera le panier, laissera l'autre personne attendre et le déverrouillera après l'avoir pris

左手右手慢动作

Beaucoup de gens pensent qu'asynchrone signifie multi-threading. C'est faux. Il y a une différence entre asynchrone et multi-threading.

Les threads sont des codes, des codes que le processeur doit exécuter ensemble. L'exécution de deux morceaux de code de thread donne aux gens le sentiment de ne pas bloquer. Mais c'est toujours du code. Le CPU y attend toujours.

Asynchrone est principalement destiné aux io, aux fichiers io et aux requêtes réseau. Vous ne voulez pas que les io synchrones bloquent le processus, il existe donc une méthode asynchrone pour améliorer la réactivité. L'asynchrone nécessite que le système d'exploitation s'abonne à la délégation d'événements. fonction de fermeture. On ne peut pas en dire autant du multi-thread.

Si vous connaissez un peu le matériel, vous pouvez ressentir l'interruption.

Prenons comme exemple la pomme dont tout le monde parle...
Asynchrone signifie, tu dis à l'ordinateur, donne-moi une pomme.
L'ordinateur utilisera le matériel Apple pour répondre à cette fonction. Est-ce que cela a quelque chose à voir avec le processeur ? Pas plus. Cela ne retardera pas le CPU.
Quand Apple fait une demande auprès du réseau, celle qui prend Apple est la carte réseau

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!