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.
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
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érentsExemple 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écutionVous 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 discussionEnsuite, 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 prisBeaucoup 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