我想在函数中很好地使用 static 关键字是这样的:
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?我担心这个例子的问题是锁会被多次分配,每个线程都会使用不同的锁。有想法该怎么解决这个吗?好像是先有鸡还是先有蛋的问题。我想要一个适用于 pthread 和 windows 线程的解决方案(或多个解决方案)。
编辑:我想要这个功能的原因是因为它提供了一种非侵入式的方式来测试在单线程或多线程运行一段代码时是否存在差异(用于调试目的)。