função D usando o x86 cmpxchg Compare-and-swap
Pergunta
Eu estou procurando uma função que apresenta um nível elevado D interface para um CAS atômica sobre Intel x86.
Eu sei que posso fazê-lo com ASM inline (e se necessário eu vou), mas eu prefiro código garra de outra pessoa se eu puder.
Solução
A partir da documentação em: http://www.digitalmars.com/d/ 2.0 / overview.html
Inline Assembler
Os drivers de dispositivo de alto desempenho as aplicações do sistema, sistemas embarcados, e código especializado às vezes é preciso mergulhar em linguagem assembly para obter o tarefa concluída. Embora as implementações D são não exigida para implementar a linha montador, é definido e parte de o idioma. A maioria das necessidades de código assembly pode ser tratado com ele, eliminando a necessidade de montadoras separadas ou DLL.
Muitas implementações D também irá suportar funções intrínsecas analogamente ao apoio da do C intrínsecos para manipulação porta de I / O, acesso directo ao flutuante especial operações de ponto, etc.
Então você poderia, em teoria o uso do cmpxchg diretamente.
Editar
Você pode querer olhar em: http://www.dsource.org/projects/tango/browser/trunk/tango/core/Atomic.d?rev=4277
Ele faz demorar um pouco para carregar, por algum motivo, mas ele está usando a instrução cmpxchg internamente, deve ser trivial para reequipar-lo para seus propósitos.