Como seria um teste de código e comportamento conjunto, sem uma instrução de hardware especial?

StackOverflow https://stackoverflow.com/questions/107184

Pergunta

A maioria das implementações Acho requerem uma instrução de hardware para fazer isso. No entanto duvido muito este é necessário (se for, eu não consigo descobrir porquê ...)

Foi útil?

Solução

Você não precisa de um teste e conjunto de instruções para obter bloqueio de exclusão mútua, se é isso que você está perguntando. Dijkstra descreveu o primeiro algoritmo de exclusão mútua Estou ciente de, em 1965. O título do artigo era "solução de um problema no controle programação concorrente", pesquisar no Google por uma cópia perto de você. O algoritmo original exigia nenhum apoio especial do hardware em tudo, mas fornecendo uma instrução atômica na CPU melhora drasticamente o desempenho.

Test-and-set, troca atômica, e vinculado carga + store-condicionado são todos primitivos comuns para CPUs de fornecer. Tudo pode ser usado para implementar exclusão mútua, que pode então ser usado para implementar qualquer que seja a semântica de bloqueio que quiser.

Outras dicas

Se você gostaria de uma maneira cruzada arco de fazê-lo, e estão usando gcc, então você pode usar builtins atômicas do gcc:

http://gcc.gnu.org/onlinedocs/gcc/Atomic -Builtins.html

Chamando estes irão resultar em uma instrução de máquina específica de hardware para a arquitetura compilação atual. Sobre aqueles que não apoiá-los, a compilação irá falhar. (Eu acho ...)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top