Mam następujący problem
jest sobie jakiś kontener - mapa, lista, nieważne - no i próbuję się do niego "dobrać" w wątku
przed operacją ustawiam mutexa, ale to powoduje komunikat nastepującej treści
QMutex: Deadlock detected in thread 0x1468
próbowałem z tryLock -ale to wtedy tak jakoś dziwnie działało - więc zrozumiałem, że nie tędy droga
poszukałem po sieci, znalazłem, że w takich przypadkach przydają się semafory, ale tu się zaczynają schody
przykłady jakieś są - ale ja ich nie rozumiem
np
http://cartan.cas.suffolk.edu/qtdocs/threads-semaphores-semaphores-cpp.html
czemu sa tam takie a nie inne wartości - skąd mają być te wartości przy semaforach
np
QSemaphore::QSemaphore ( int n = 0 )
Creates a new semaphore and initializes the number of resources it guards to n (by default, 0).
co to są te zasoby?
jak mam np jeden kontener do które próbuję coś pisać/czytać w watkach to daje tam jeden?
mam prośbę o jakiś konkret
//np mam listę
QList<QString> lista;
//lub mapę
QMap<int, QString> mapa;
//mam metody do zapisu i odczytu
void zapisz(int klucz, Qstring wartość)
{
mapa[klucz] = wartość;
}
Qstring odczyt(int klucz)
{
if(mapa.contains(klucz))
return mapa[klucz];
return "";
}
//i co powinienem wpisać, jak powinienem zapisać te metody, aby nie było deadlocka?
z góry dziękuję za pomoc