2010-07-13 15 views
0

Mutex requis pour une ressource partagée de 1 octet? Si non, pourquoi pas? Considérez que j'utilise le PC de bureau normal pentium IV, 32 bits. La condition changera-t-elle si le noyau 2 est utilisé?Mutex sur une ressource partagée de 1 octet

Répondre

2

Cela dépend de ce que vous allez en faire, mais si vous avez plusieurs graveurs, implémentés en C ou C++, alors oui vous avez besoin d'un mutex - la taille de la ressource n'est pas le problème.

+0

Oui, il y a plusieurs écritures et lectures. – Alam

+0

Juste pour effacer mes doutes: Si la CPU est un processeur unique alors en lisant un seul octet (ou un mot sur la machine 32 bits) si l'interruption se produit, le changement de contexte après la lecture/écriture En bref combien de cycles CPU sont nécessaires pour lire/écrire un mot complet. – Alam

+0

@alam Peu importe le nombre de cycles d'horloge - pour mettre à jour une valeur, le compilateur peut émettre un code qui fait essentiellement une lecture, un changement et une écriture (ie au moins trois instructions machine), et sans mutex un passer à un autre thread peut avoir lieu après l'un d'eux .. –

0

Le processeur n'a pas d'importance car le planificateur de tâches est libre d'interrompre un thread à tout moment. La taille n'a pas d'importance. Si c'est partagé, vous avez besoin d'une méthode de verrouillage.