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
Odpowiedz
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.
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.
- 1. Jak kodować za pomocą JCIP (Java Concurrency in Practice)
- 2. concurrency node.js
- 3. Java Iterator Concurrency
- 4. Clojure Vector of Refs
- 5. dosłowny i RValue odniesienia
- 6. C++: pamięć wartości rvalue
- 7. Java int concurrency ++ int równoważne AtomicInteger.incrementAndGet()?
- 8. Przekaż wartość lub rvalue-ref
- 9. lwartości do rvalue wiążące odniesienie
- 10. vector.push_back RValue i kopia elizja
- 11. std :: wiążą i odniesienie RValue
- 12. RValue hello world brakuje konstruktor
- 13. Czy "refs/heads/master" jest takie samo jak "refs/remote/origin/master" w Git?
- 14. C++ RValue odniesienia i const kwalifikatora
- 15. Nie udało się zablokować refs/heads/master
- 16. Co oznacza przyjmowanie adresu referencyjnego wartości rvalue?
- 17. Jak obejść ostrzeżenie "rvalue used as lvalue"?
- 18. Przedłużenie żywotności tymczasowy z rvalue odniesienia
- 19. rvalue jako inicjator do budowy obiektu
- 20. Funkcja akceptująca oba argumenty: lvalue i rvalue
- 21. C++ konwersji lwartości odniesienia i rvalue odwołuje
- 22. odpowiedni sposób do przekazania rvalue Reference
- 23. Jak działa funkcja return by rvalue reference?
- 24. Java Concurrency - najlepiej ukończony samouczek i potrzebny przykładowy kod
- 25. Czy liczba procesów selerowanych zależy od ustawienia --concurrency?
- 26. migracja git-svn fatal: nie jest poprawna SHA1 update-ref refs/heads/master refs/remote/trunk: command zwrócił błąd: 128
- 27. Debugowanie odwołań rvalue w C++ 11 z gdb
- 28. Uzyskaj odwołanie do elementu bez użycia refs w reakcji
- 29. Nie można odczytać właściwości "refs" o błędzie reagowania null js
- 30. Git refs/remote/origin/master nie wskazuje na poprawny obiekt
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ę. –
@Hans: To referencje rvalue jako ogólne "wspieramy to w MSVC10", nie ma w tym nic szczególnego w CCR. – Puppy
Po prostu pomyślałem, że to zabawne, że znalazł się na stronie startowej CCR. –