Я подумал, что хорошее использование статического ключевого слова внутри функции должно выглядеть примерно так:
void threadSafeWrite(int *array, int writeIndex, int writeData){
static void *threadLock = Lock_create(); //in my code locks are void* to be cross-platform compatable
Lock_aquire(threadLock);
array[writeIndex] = writeData;
Lock_release(threadLock);
}
Короче говоря, это хороший способ сделать критический раздел.Мой вопрос, однако, как я могу инициализировать threadLock безопасным способом?Проблема с примером, которого я боюсь, заключается в том, что блокировка будет выделена несколько раз, и каждый поток будет использовать свою блокировку.Любые идеи о том, как это исправить?Похоже, проблема курицы и яйца.Я хочу решение (или решения), которые работают как с pthreads, так и с потоками Windows.
РЕДАКТИРОВАТЬ: причина, по которой я хочу эту функциональность, заключается в том, что она предоставляет ненавязчивый способ проверить, есть ли разница при запуске фрагмента кода однопоточный или многопоточный (предназначен для отладки).*