Как определить текущий объем пространства стека, используемый текущим потоком в многопоточной программе на C++? Я использую POSIX pthreads.Определить использование стека для pixread?
У меня есть многопоточная программа, в которой один из стеков взрывается, но я не могу понять, какой из них. Поэтому я заинтересован в том, чтобы каждый поток сообщал журнальному файлу текущее использование стека, которое должно быть разницей между началом этого стека и текущим указателем стека. Я знаю, как это сделать на языке ассемблера, но я ищу портативный подход, используя вызов pthreads
или что-то подобное.
Спасибо.
Пространство для столов зарезервировано для каждой темы, а не только для использования. То есть Какую проблему ты пытаешься решить*? Вы пытаетесь остановить запуск кода из-за того, что он приближается к ограниченному хранилищу стека, который вы, без сомнения, задаете с помощью 'pthread_attr_setstack()'? – WhozCraig
Я расширил вопрос. 'pthread_attr_setstack' устанавливает размер стека для создаваемых новых потоков. Я хочу знать текущее количество используемого пространства стека. – vy32
Учитывая ограничения вашей проблемы, адрес локальной переменной области по сравнению с локальным в верхней части потока-proc, вероятно, будет достаточным. Даже не * закрыть * переносимым, но это может показать проблему. Является ли стек ударом из-за глубокой * рекурсии * (таким образом, рамки активации mondo) или действительно больших фиксированных массивов? Что касается портативных, однако, у меня нет таких знаний, что такой механизм существует даже, но его было немного, так как я был в pthreads-land. – WhozCraig