Malloc безопасно для использования с ногилом?

Безопасно ли выделять память с помощью malloc с помощью nogil в cython? Также безопасно передавать указатели, если у вас есть многопоточная программа, работающая с nogil?

1 ответ

GIL на месте, потому что управление памятью CPythons не является поточно- ориентированным. Как следствие, вы можете использовать nogil в случаях, когда вы не взаимодействуете с объектом Python, то есть с памятью, которая обрабатывается Python.

Это упомянуто в документации для выпуска GIL:

Код в теле оператора не должен каким-либо образом манипулировать объектами Python и не должен вызывать ничего, что манипулирует объектами Python без предварительного повторного получения GIL. Cython в настоящее время не проверяет это.

Итак, используя malloc, передавая указатели и делая все остальное, что является законным в C совершенно безопасен, пока не задействованы никакие объекты Python.

Другие вопросы по тегам