Précédent   Forum du club des développeurs et IT Pro > Systèmes > Mac > Objective-C
Objective-C Forum d'entraide sur le langage de programmation Objective-C
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 18/10/2012, 11h39   #1
smartmobili
Invité de passage
 
Inscription : avril 2009
Messages : 15
Détails du profil
Informations forums :
Inscription : avril 2009
Messages : 15
Points : 2
Points : 2
Par défaut Synchroniser 2 threads

Bonjour,

J'ai le problème suivant, j'ai 2 threads qu'on va appeller Thread1(qui est en fait le ThreadUI) et Thread2 dont ce dernier a une boucle while et je voudrais que s'il est en train d'exécuter la boucle courante le thread1 ne puisse pas exécuter un bout de code tant que le while n'a pas fini son iteration courante, cad juste avant de commencer une nouvelle iteration.
Et réciproquement tant que le Thread1 n'a pas fini d'éxécuter son code, que la boucle while soit en attente avant de pouvoir continuer sa prochaine itération

Dans mon thread1 j'ai un truc du genre :

Code :
1
2
3
4
5
6
7
8
9
10
if (update)
        {
           
           // ATTENDRE tant qu'on a pas le lock et prendre le lock
            _margin = getDoublePageMarginForHost([self host], _size.width, _size.height);
            setViewPortForHost([self host], size.width, size.height);
            
            // relacher le lock  
        }
et mon thread2 on a le bout de code suivant :

Code :
1
2
3
4
5
6
7
8
9
10
while(_shouldContinue) { // loop to process requests
            VSLog(@"dequeue and process");
            
            // ATTENDRE tant qu'on a pas le lock et prendre le lock
            [self _dequeueAndProcess];
             // relacher le lock

            VSLog(@"dequeue and process next");
        }
Donc d'après ce que je comprends j'aurais besoin de NSCondition donc j'ai commencé a faire une classe singleton :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
@interface NLThreadLocker : NSObject
{
    //pthread_mutex_t    _mutex;
    //NSLock * _lock;
    
    NSConditionLock *  _condLock;
    BOOL _canLock;
}

@property NSConditionLock *condition;
@property BOOL canLock;

+ (NLThreadLocker *)sharedLocker;
Mais ensuite je ne vois pas trop comment architecturer la suite, est ce que si je déclare 2 methodes lock et unlock ca peut le faire et je ne vois pas trop l'implementation.
smartmobili est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 09h05.


 
 
 
 
Partenaires

Hébergement Web