Como seria um teste de código e comportamento conjunto, sem uma instrução de hardware especial?
-
01-07-2019 - |
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ê ...)
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 ...)