Je travaille sur du code multithread. L'accès aux données est verrouillé dans plusieurs sections via des objets "NSLock". Je veux m'assurer que certaines méthodes qui sont appelées dans ces sections vérifient si leur verrou approprié a été acquis.Existe-t-il un moyen de vérifier si un NSLock a été acquis?
Quelque chose comme:
assert([myLock isSet] == YES);
Je ne peux pas trouver quelque chose comme "isSet" dans NSLock. Des idées sur la façon d'assurer un verrouillage sont définies?
Merci!
Merci. tryLock est exactement ce que je veux. Je peux faire: assert (! [MyLock tryLock]); Je comprends que cela me dit que l'objet est "verrouillé". Cela ne me dit pas si le bon fil a le verrou. En outre, je suis d'accord avec vous que c'est une chose discutable à faire. Mais j'essaie désespérément de trouver un bug (je ne pense pas que le bug soit lié au verrouillage, mais je ne trouve rien de mal dans l'autre code non plus - donc je dois vérifier le verrouillage). –
Lars Schneider: 'tryLock' fait exactement ce qu'il dit: Il essaie de verrouiller le verrou. Si cela réussit, cela ne signifie pas simplement qu'il n'était pas verrouillé avant, cela signifie également que * il est maintenant verrouillé *. C'est pourquoi vous devez le déverrouiller s'il réussit: Sinon, vous tenez le verrou quand vous ne le souhaitez pas. –
+1 Pour répondre à la question avant de l'interroger. –