Альтернативы новым целочисленным операциям GCC - PullRequest
5 голосов
/ 27 октября 2009

Недавняя поддержка GCC для атомарных операций (как описано здесь ) великолепна и составляет 90% от того, что нам нужно. К сожалению, некоторые из наших продуктов по-прежнему должны работать в Windows, поэтому нам также нужны атомарные целочисленные операции для Windows.

В прошлом у нас были пользовательские реализации на ассемблере для всех наших платформ, но я бы хотел перенести все платформы * nix на операции, поддерживаемые GCC, и мне в голову пришла мысль, что, возможно, есть и более стандартный способ. и теперь делать это в Windows ...

Есть ли официально санкционированный способ сделать это в Windows (кроме как реализовать их самостоятельно на языке ассемблера)?

Ответы [ 3 ]

6 голосов
/ 27 октября 2009

Вам нужны функции Interlocked .

0 голосов
/ 27 октября 2009

GLib предоставляет некоторые атомарные операции , и они, как известно, выполняются на окнах. Вы можете проверить источники на предмет идей или напрямую выбрать нужный код.

0 голосов
/ 27 октября 2009

Это зависит от того, кто из них вам нужен - я не думаю, что есть (предварительно собранная) реализация каждого из них в Windows (за исключением, возможно, в gcc), но некоторые из них существуют уже довольно давно , В Windows есть InterlockedIncrement, InterlockedDecrement, InterlockedAdd, InterlockedOr, InterlockedXor и т. Д.

...