我想知道两个线程是否可以修改同一个数组的元素.
如果我有unsigned char array[4],可以thread1设置array[0]和array[1]'A'和thread2设置array[2]和array[3]'B'同时没有问题?
我刚试过这段代码:
void swapBit(unsigned char* numbA, unsigned char* numbB, short bitPosition)//bitPosition 0-x
{
unsigned char oneShift = 1 << bitPosition;
unsigned char bitA = *numbA & oneShift;
unsigned char bitB = *numbB & oneShift;
if (bitA)
*numbB |= bitA;
else
*numbB &= (~bitA ^ oneShift);
if (bitB)
*numbA |= bitB;
else
*numbA &= (~bitB ^ oneShift);
}
Run Code Online (Sandbox Code Playgroud)
交换a和b的位位置x,但由于if()我认为有更好的东西.
当我看到这个:
*numbB &= (~bitA ^ oneShift);
Run Code Online (Sandbox Code Playgroud)
我真的认为有一种更简单的方法.如果你有东西给我,我会接受它:)
提前致谢