tak tam daj tym threadom pocitat nejaku funkciu, napr. 10x sinus alebo nieco take a skus to pustit raz so zamkami a raz bez, ze o kolko sa to bude lisit v rychlosti
Kontrolu na lock a precitanie musis urobit atomicky. Alebo mozes spravit read-only lock. Teda ze sice je zamknute, ale citat moze kolko chce threadov naraz. V praxi thread, ktory chce menit data ich naprv zamkne, potom precita, potom nad nimi urobi nejaky vypocet (tento byva o dost dlhsi ako cas citania/zapisu) a nakoniec zapise vysledky. Preto "zapisovacie" locky trvaju omnoho dlhsie a teda dlhsiu dobu blokuju paralelizmus. Alebo - ak nevadi ze pocas vypoctu spracuvaju ostatne thready stare udaje, tak si na zaciatku moze data precitat aj z read-only locku a zamykat iba pri konecnom zapise.Edit: krom toho mi to fakt neprijde prilis prevratny ... v databazich se takovejhle pristup pouziva uz roky ...
navic dalsi vec je, ze kdyz pracujes s vetsima blokama dat, nebo napr. scenama tak pri cteni stejne musis zamknout proti zapisu celou scenu, protoze kdyz jen zkontrolujes, ze neni zamceno, muze te v nasledujicim taktu preemptnout jinej thread, zamknout a zapsat. ty uz mas zkontrolovano a tudiz vpohode ctes zmeneny data....