Primer resultado en Google para "vector libre de cerrojo" es un trabajo de investigación escrito por Damian Dechev, Peter Pirkelbauer y Bjarne Stroustrup que describe un vector teórico sin cerrojo. ¿Se ha implementado este u otro vector sin bloqueos?¿Hay una implementación de vector sin bloqueo?
Respuesta
MS proporciona ppl :: concurrent_vector e Intel proporciona tbb :: concurrent_vector. En Windows, al menos, ppl y tbb son parte del C-Runtime.
* Concurrente * y sin bloqueo son cosas completamente diferentes –
Tiene la razón, es simultáneo y no tiene bloqueos. Tenía la impresión de que la implementación de MS ppl de concurrent_vector estaba libre de bloqueos. ¿No es así? – Unknown1987
Tiendo a suponer que, a menos que se especifique lo contrario, ninguna biblioteca está bloqueada, y no he visto ninguna referencia en un vistazo rápido a la documentación que indica que ppl :: concurrent_vector no tiene cerrojo. –
Acabo de ver qué es un vector, en la wikipedia.
Creo (solo un minuto o dos de pensar, por supuesto) una versión totalmente libre de bloqueos es un poco problemática.
Considerar; creas la matriz, accedes a ella de forma normal, etc. Para esto no necesitas estar libre de bloqueos. El problema viene cuando necesitas cambiar el tamaño. El hilo que entra y descubre esto necesita malloc. Esta es una operación realmente única: otros hilos en este punto deben bloquearse/girar. Si intentaron ayudar, p. hacer el malloc ellos mismos, podría tener muchos hilos emitiendo el malloc. Ahora bien, podría ser que en la práctica el número de subprocesos es bajo, está bien, en cuyo caso puede tener una cantidad de subprocesos ejecutando el malloc, con el ganador activando atómicamente la nueva memoria y los perdedores viendo esto y luego libre () ing su memoria.
Luego de realizar la copia, cuando un hilo trata de acceder a un elemento, así, tendremos que hacer un seguimiento de todos los de las matrices asignadas en una lista, y se accede a ellos a través de la lista, el más antiguo primero , hasta que encontremos el elemento que queremos y, si no está en la matriz más reciente, lo movemos y luego accedemos a él.
También necesitamos una forma para que un hilo sepa que ha movido el elemento final y puede liberar ese conjunto, así que tendremos que contar los elementos; entonces tenemos un riesgo de requisitos de asignación potencialmente ilimitados. Lo que es más, la estructura de datos (he dicho una lista, pero podrían ser otras cosas, aunque no serán tan buenas, prolíficamente) tendrá que ser atómica (ya que quizás los hilos podrían eliminar una matriz al mismo tiempo) y una lista atómica sin cerraduras fue hasta hace poco el pináculo de las estructuras de datos sin cerraduras, tan complejas como pueden ser, que requieren SMR y con una implementación compleja.
(digo hasta hace poco - Hace poco alguien inventó un árbol rojo-negro sin bloqueo, todo el asunto, añadir y borrar!)
TBH, no entiendo por qué alguien podría usar un vector. ¿Por qué no usar simplemente un árbol binario equilibrado o un hash?
http://www.linuxsoftware.co.nz/containerchoice.png –
- 1. ¿Existe una implementación de cola FIFO optimista sin bloqueo?
- 2. Implementación de Vector Clock
- 3. Bloqueo sin bloqueo
- 4. ¿Hay una implementación de lista sin duplicados por ahí?
- 5. tamaño de arreglo (bloqueo) de std :: vector
- 6. ¿Hay una instrucción de bloqueo en VB.NET?
- 7. Implementación de bloqueo distribuido usando archivos
- 8. Archivo sin bloqueo lee
- 9. Sin bloqueo pthread_join
- 10. ¿Colección concurrente sin bloqueo?
- 11. ¿Hay una implementación para SqlGeometryBuilder?
- 12. zócalo Java sin bloqueo
- 13. Javascript sin bloqueo
- 14. ¿Cómo puedo escribir una estructura sin bloqueo?
- 15. ¿Hay una implementación de VBScript de Markdown?
- 16. getch sin bloqueo(), ncurses
- 17. ¿Hay una implementación de bolsa en Ruby?
- 18. ¿Hay una implementación de "getopt" para Delphi?
- 19. ¿Hay una implementación gratuita de Ada?
- 20. ¿Hay una implementación Java de tipo 'reducir'?
- 21. ¿Hay una implementación de TList más rápida?
- 22. Vacaciones: ¿hay una implementación de Java?
- 23. ¿Hay una implementación C++ MinMax Heap?
- 24. Descarga de javascript sin bloqueo
- 25. Diálogo modal de bloqueo sin bloqueo Swing progress
- 26. Cerraduras de bloqueo frente a cerraduras sin bloqueo
- 27. Implementación de un vector de tamaño fijo, inmutable y especializado
- 28. ¿Hay una implementación 'multimap' en Python?
- 29. ¿Hay una implementación C++ para árboles vEB?
- 30. ¿Hay una Implementación del servidor Node OAuth
Tal vez [libcds] (http://libcds.sourceforge.net/)? –
¿Podría el votante de bajos explicarse a sí mismo? – qdii
votos cojos – Justicle