bonjour � tous,
J'ai besoin de votre aide pour prendre du recul sur la cr�ation d'une classe concurrentQueue (CQ).
J'essaye de faire des codes d'exemples pour ma classe. Mon erreur n'est pas sur de la compilation ou linkage mais sur du fonctionnel. Mon instance de CQ n'est pas partag� entre mes diff�rents instances utilisateur de CQ.
Voici ma classe de concurrentQueue :
Je l'utilise de cette fa�on l� :
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13 class concurrentQueue { public: concurrentQueue(){}; concurrentQueue(const concurrentQueue& other){ std::lock_guard<std::mutex> lock(other.mut); data_queue = other.data_queue; }; concurrentQueue &operator=(const concurrentQueue &other) = delete; virtual ~concurrentQueue(){}; [....] };
Mon probl�me est que mes queue dans A et B s�incr�mentent ind�pendamment. Et ma queue dans ma classe useAandB est toujours vide.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70 class Abstraite { public : Abstraite(const concurrentQueue<int>& aQueue) : myQueue(aQueue){}; virtual void execute(int number) = 0; [...] }; class concreteA : public Abstraite { public: concreteA(const concurrentQueue<int>& aQueue) : myQueue(aQueue){}; void execute(int number) { int n = number -1; myQueue.push(n); }; [....] }; class concreteB : public Abstraite { public : concreteB(const concurrentQueue<int>& aQueue) : myQueue(aQueue){}; void execute(int number) { int n = number + 1; myQueue.push(n); } [.....] }; class useAandB { public : useAandB() {}; void run(); [.....] private : concreteA A; concreteB B; concurrentQueue<int> myQueue } useAandB::useAanB { A = concreteA(myQueue); B = concreteB(myQueue); } useAnB::run() { int number{5}; A.execute(number); B.execute(number); while(!myQueue.isEmpty) { int value{0}; bool try = myQueue.try_and_pop(value) if (try) std::cout << value << std:endl; else std::cout << "Pas de valeur" << std:endl; } std::cout << "Fin de lecture" << std::endl; } int main { useAandB test; test.run(); exit 0; }
J'ai l'impression que mon passage par r�f�rence est mal fait.
Quel est votre avis ?
Partager