2010-12-13 10 views
6

Trochę zaabsorbowałem nowym środowiskiem wykonawczym współbieżności programu Visual Studio (ConcRT). Czy jest to tylko niedopatrzenie, czy też istnieje ważny powód, dla którego żaden ruch danych nici nie ma semantyki ruchu? Wszystkie są semantyką kopiowania. Nie można przejść do kolejki współbieżnej, nie można przenosić z asend itp. Nie można nawet przenieść konstrukcji współbieżnych kolejek.Rvalue refs in concurrency

+0

Hehe, jest * wyraźnie * wymieniony na tej stronie startowej o CCR: http://msdn.microsoft.com/en-us/library/dd504870.aspx Prawdopodobnie jest za stary, aby odebrać C + Poprawki + 0x. Kod taki jak ten gulasz przez chwilę. –

+1

@Hans: To referencje rvalue jako ogólne "wspieramy to w MSVC10", nie ma w tym nic szczególnego w CCR. – Puppy

+0

Po prostu pomyślałem, że to zabawne, że znalazł się na stronie startowej CCR. –

Odpowiedz

3

Nie znam tej konkretnej struktury, ale ogólnie dla kolejek między wątkami musisz mieć semantykę kopiowania.

Wyobraź sobie, że utworzę obiekt, przyjmij do niego odnośnik/wskaźnik, a następnie przenieś go do kolejki. Następnie drugi wątek usuwa go z kolejki. Wtedy oba wątki mogą uzyskać do niego dostęp w tym samym czasie.

Myślę, że w ogólnym przypadku konieczne jest posiadanie tylko kopii na dodanie lub usunięcie, nie obu (tj. Tylko jedna kopia). na przykład kopiowanie w ruchu, ale byłoby to semantycznie takie samo, jak kopiowanie.

1

Istnieje wiele obszarów, w których wsparcie rvalue może zwiększyć ConcRT, agentów i PPL. Podobnie jak w przypadku każdego dużego projektu programistycznego, gdy budujesz funkcje oparte na innych nowych funkcjach, zawsze istnieje ryzyko, że możesz dostarczyć wszystko naraz.

PPL było dużym krokiem naprzód, ale nigdy nie powiedzieliśmy, że było "zrobione". :-)

Jeśli masz konkretne sugestie, w których biblioteki ConcRT, PPL lub Agents powinny obsługiwać semantykę ruchu, otwórz propozycję na stronie connect.microsoft.com.

Powiązane problemy