2010-02-25 14 views

Respuesta

3

lo que están pidiendo que se llama Software Transactional Memory. Dado que este es actualmente un área abierta de la investigación y no hay apoyo lenguaje C# nativa en este momento, es posible que sea mejor usar el existing synchronization options for C#, como por ejemplo la palabra clave lock, monitores, esperan mangos, etc.

Si realmente necesita características transaccionales avanzadas, hay un montón de library implementations, por ejemplo, < editar> SXM por Microsoft Research STM.NET </editar>.

+0

Sé que esta es una respuesta antigua (y una pregunta), pero ahora me preguntaba acerca de las transacciones de C# para las operaciones en memoria, y lo encontré. Sin embargo, los enlaces a STM.NET parecen estar muertos. ¿Se ha descontinuado el proyecto? ¿Hay una alternativa? – Shaamaan

+1

@Shaamaan: El enlace de Wikipedia también tiene una lista de implementaciones: https: // en.wikipedia.org/wiki/Software_transactional_memory#C.23 – Heinzi

0

No hay transactioning similar a SQL para C# objetos, pero si esto porque tiene problemas de roscado, se debe utilizar lock:

lock (myList) 
{ 
    if (myList.Count > 0) 
     myList.Clear(); 
} 

Esto simplemente borra una lista, pero asegura que no puede ser modificado por otro hilo al mismo tiempo.

1

Para una buena discusión sobre cómo implementar la transacción en OOP eche un vistazo a este discussion. Allí se resaltan los patrones de memento y estado para lograr un comportamiento transaccional (entre otros métodos).

3

Puede que le interese Software Transactional Memory. Existe una implementación en el mundo .NET, llamada STM.NET.

software transaccional memoria (STM.NET) es un mecanismo eficiente para el aislamiento de estado compartido. El programador demarca una región del código que opera dentro de una transacción que es "atómica" y "está aislada" de otro código transaccionado que se ejecuta simultáneamente.

Aquí es el blog del equipo de Microsoft STM.NET: http://blogs.msdn.com/stmteam/

+0

Tiene razón acerca de STM, pero no se olvide de notar que STM todavía está en investigación, desarrollo y no lo usaría en el software de producción. – Steven

1

Eche un vistazo a Software Transactional Memory (STM.NET).

No tenía en .Net 4, pero está disponible como una descarga independiente

1

Se ha producido un Interesting article en el blog de Joe Duffy sobre el intento de hacer memoria transaccional en la EM. Si tuviera que resumirlo, diría: solo haz esto tú mismo si es por diversión.

0

Puede usar el TransactionScope Class.

+0

esto es completamente incorrecto, el TransactionScope solo se usa para DB – Idan

+0

Humm .. no. Se puede usar para cualquier cosa que implemente IEnlistmentNotification – vtortola