国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

java - Une question sur i++
phpcn_u1582
phpcn_u1582 2017-05-17 10:00:27
0
2
682

Utilisez 2 threads pour incrémenter automatiquement (i++) i=1, et chaque thread l'exécute 100 fois Quelles sont les valeurs maximales et minimales possibles ? Merci de donner une explication

Demandez également?: ++i est-il atomique??

phpcn_u1582
phpcn_u1582

répondre à tous(2)
洪濤

Le minimum peut être 3, soit +2, et le maximum peut être 201, soit +200. . . . Pourquoi je ne pars pas de 0. . .

Un processus cyclique est?:

  1. Lire les données de la mémoire pour s'inscrire

  2. Valeur d'enregistrement++

  3. Réécrire les données en mémoire

Un fil de discussion peut être interrompu dans l'une de ces trois étapes. Le cas de 3 est?:
Le premier thread lit les données 1, puis est suspendu et la valeur du registre est enregistrée à un autre endroit. 1,然后被掛起,寄存器的值被保存到另一個地方。
第二個線程,持續(xù)執(zhí)行了 99 次(此時,內(nèi)存中的值為 100),然后被掛起。
第一個線程被喚醒,恢復(fù)寄存器的 1 +1 之后 (=2)被寫回內(nèi)存,該線程被掛起
第二個線程從內(nèi)存讀取2到寄存器之后被掛起
第一個全部執(zhí)行完,把值寫回內(nèi)存
喚起第二個線程,恢復(fù)寄存器中的2,完成最后一次循環(huán)+1 之后寫回 3

所以最終結(jié)果是 3Le deuxième thread a continué à s'exécuter 99 fois (à ce moment-là, la valeur en mémoire était 100), puis a été suspendu.

Le premier thread est réveillé, et après que le 1 +1 du registre de récupération (=2) soit réécrit dans la mémoire, le thread est suspendu

Le premier Les deux threads lisent 2 de la mémoire dans le registre et sont suspendus. Le premier est entièrement exécuté et réécrit la valeur dans la mémoire.

Avoque le deuxième thread. et restaure la valeur dans le registre 2, réécrivez 3 après avoir terminé la dernière boucle +1

. ??Le résultat final est donc 3. . . . ?? ??Je n’ai pas encore pensé à une méthode de planification plus petite. . . ?? ??La valeur maximale n'a pas besoin d'être trop expliquée. . . . ??
Ty80

La valeur minimale est 2 et la valeur maximale est 200.
2 signifie que les deux threads modifient les données dans le cache CPU, et au final la mémoire n'est rafra?chie qu'une seule fois.
200 signifie que les deux threads lisent et modifient alternativement sans se faire concurrence.
Nous avons tous posé des questions sur les valeurs maximales et minimales, mais naturellement elles ne sont pas atomiques.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal