#c #linux #mmap #coroutine
#c #linux #mmap #сопрограмма
Вопрос:
Я хочу использовать сопрограммы на C (Linux), но я не хочу тратить много места на каждую из них. Мне интересно выделить пространство для стека с помощью mmap()
given MAP_GROWSDOWN
, но я где-то читал, что это было сломано, знаете ли вы что-нибудь еще об этом?
Ответ №1:
но я не хочу тратить много места на каждую из них
Не беспокойтесь об этом. Ваша сопрограмма может иметь большой стек, но это не вызовет никаких проблем с производительностью или ресурсами, если стек фактически не используется. Логическим страницам памяти не будут назначены физические страницы до этого момента. И если это используется, значит, вам это было нужно тогда, не так ли?
Просто используйте стек приличного размера и покончите с этим.
Комментарии:
1. Итак, что вы говорите о том, что я должен выделить большое
mmap
отображение и что память не будет использоваться до тех пор, пока к ней не будут физически прикасаться?2. Однако хочу предостеречь: вы можете исчерпать свое виртуальное адресное пространство, даже если не используете память.
3. @Sylvain, я понимаю это; к счастью, я ориентируюсь на 64-битные архитектуры.