Malloc безопасно для использования с ногилом?
Безопасно ли выделять память с помощью malloc с помощью nogil в cython? Также безопасно передавать указатели, если у вас есть многопоточная программа, работающая с nogil?
1 ответ
GIL на месте, потому что управление памятью CPythons не является поточно- ориентированным. Как следствие, вы можете использовать nogil
в случаях, когда вы не взаимодействуете с объектом Python, то есть с памятью, которая обрабатывается Python.
Это упомянуто в документации для выпуска GIL:
Код в теле оператора не должен каким-либо образом манипулировать объектами Python и не должен вызывать ничего, что манипулирует объектами Python без предварительного повторного получения GIL. Cython в настоящее время не проверяет это.
Итак, используя malloc
, передавая указатели и делая все остальное, что является законным в C
совершенно безопасен, пока не задействованы никакие объекты Python.