O que é memória transacional?
No software, o esquema da memória transacional é um curso de ação para programação multithread que usa transações que são muito parecidas com as que um banco de dados usa. Quando dois ou mais encadeamentos tentam acessar os mesmos dados ao mesmo tempo, muitas situações indesejáveis diferentes podem resultar em casos em que o resultado de um programa depende da ordem de acesso ao encadeamento. Geralmente, um pedido é desejado e, em multithreading, os bloqueios são a maneira predominante e mais simples de garantir que apenas um único encadeamento tenha acesso a um recurso específico por vez.
Essa abordagem da memória transacional contém vários problemas em relação aos bloqueios no multithreading. Um bloqueio pode se tornar permanente se ocorrer algum tipo de erro imprevisto, e os bloqueios podem causar problemas imprevisíveis com a simultaneidade, como conflito ou inversão de prioridade. Como os bloqueios são muito detalhados, outro problema inclui o código que acaba passando a maior parte do tempo entre o bloqueio, a alternância de contexto e o desbloqueio. Esse é um problema crucial, pois pode resultar no código gastando mais tempo com essas ações do que com outro trabalho importante no programa. Por outro lado, bloqueios de granulação grossa podem causar desempenho de processamento reduzido e simultaneidade reduzida.
Os problemas na memória transacional são resolvidos por bloqueios avançados, incluindo "bloqueio de bloqueio" do C #, bloqueios de leitura e gravação, barreiras de gravação etc. Uma das principais prioridades em relação à memória transacional é não ter bloqueios nem tempo de processamento desnecessário de bloqueios . Geralmente, é aceito que uma estrutura de dados compartilhada esteja livre de bloqueios se a exclusão mútua não for exigida por suas operações. As estruturas de dados compartilhadas e livres de bloqueios evitam problemas comumente associados às técnicas de bloqueio padrão, se estiverem em sistemas altamente concorrentes.
O modelo de coerência e consistência de memória transacional (TCC) é um novo modelo proposto na memória compartilhada. De acordo com o modelo, as transações atômicas são invariavelmente unidades básicas do seguinte: trabalho paralelo, coerência da memória, comunicação e consistência da referência de memória. O modelo TCC também simplifica o software paralelo, eliminando a sincronização que usa bloqueios ou semáforos padrão. Por meio do hardware, o TCC também combina todas as gravações de cada região de ocorrência da transação em um pacote para transmitir atomicamente o pacote para um estado de memória que é permanentemente compartilhado. Além do hardware de coerência simplificado, isso significa que há uma redução nas mensagens de baixa dormência necessárias e uma eliminação completa de certos protocolos de coerência padrão.