Здравствуйте Serge, вы писали:
S>Т.е. я так понимаю, что если 2 потока одновременно выполняют одну и ту же функцию, то в каждый момент времени эта функция работает с данными 1 потока, а при переключении на другой поток получает данные другого потока?
Что значит "с даннымим одного потока" ?
У всех потоков одного процесса память общая а значит и данные общие.
Разделение данных по потоком это всегда условность.
Ты сам должен решить куда и какой поток будет лазить.
И если два потока лезут в одно место, значит нужно ставить критические
секции.
Однако, стек у каждого потока свой, т.е. локольные переменные
и параметры при вызове функции из разных потоков, располагаются в разных местах
и следовательно защищать ничего не надо.
в приведенном выше примере нет ниодной глобальной переменной
и если не передавать из потока в поток указатели на данные
никакой защиты не нужно
однако, если мы захотим вынести LIST_ITEM* pHead в область глобальных
переменных и разрешим доступаться к списку из всех потоков
во тут-то и придется задуматься о снхронизации