2010-07-22 5 views
6

J'ai le code Perl suivant:Est-ce que pousser une variable sur un tableau est une opération threadsafe?

push(@myArray, $myValue); 

est l'opération atomique, ou ai-je besoin d'utiliser des verrous, si plusieurs threads se produiront cette même opération sur plusieurs threads?

+0

Apparemment, vous voulez un objet Thrread :: Queue. – MkV

+0

Que voulez-vous dire «même opération»? Est-ce que @myArray est partagé? –

Répondre

2

La sécurité des threads de la plupart des fonctions de Perl dépend de leurs routines C sous-jacentes, et dans le cas des built-ins, comme push, il n'y a aucune mention de la sécurité des threads.

Consultez la page de manuel perlthrtut, en particulier la section intitulée «Sémaphores de base». À l'aide d'un sémaphore, vous pouvez imposer une exclusion mutuelle dans des sections de code arbitraires.

Questions connexes