2016-04-10 3 views
1

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

+1

Конечно. Пока вы освобождаете свою память, когда делаете это, и используйте блокировки, когда это необходимо, вы золотые. –

ответ

2

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

Это упоминается в документации for releasing the GIL:

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

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

Смежные вопросы