Если два потока вызывают одну и ту же функцию, но все переменные в функции являются локальными, нужно ли мне беспокоитьсC++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Если два потока вызывают одну и ту же функцию, но все переменные в функции являются локальными, нужно ли мне беспокоитьс

Сообщение Anonymous »

Предположим, у меня есть код C++ следующего формата высокого уровня:

Код: Выделить всё

#include 
void func1(vector &somevec1, vector &somevec2, size_t somesize){

//somevec1 and somesize and a bunch of local variables being used to modify somevec2
//somevec1 and somevec2 and somesize are all the same across all threads, but each thread is working on a different part of somevec2

}

vector mainfunc(vector &passingvector){

//a bunch of stuff involving local variables

// A thread is made that uses func1
// Another thread is made that uses func1
//in fact the number of threads being made that uses func1 depends entirely on the size of "passing vector"

//a bunch of other stuff involving local variables

//return the vector
}
Нужно ли мне беспокоиться о том, что все эти потоки совместно используют данные в функции func1, или каждый поток будет иметь собственное пространство стека для этих локальных переменных func1?

Если мне действительно придется об этом беспокоиться, то как мне обойти эту проблему? Я очень новичок в использовании потоков. Придется ли мне использовать мьютексы или семафоры для решения этой проблемы?

Причина, по которой я спрашиваю об этом, заключается в том, что я постоянно получаю ошибку сегмента и пытаюсь выяснить независимо от того, связано ли это с тем, что потоки могут использовать общие переменные в func1. Я пытаюсь использовать GDB, но я новичок в этом, поэтому мне трудно понять, что происходит. Кто-нибудь знает что-нибудь, что может помочь мне определить ошибку сегмента более читаемым способом?

Спасибо :)

Подробнее здесь: https://stackoverflow.com/questions/570 ... nction-are
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»