2016-04-25 晶格思维
晶格思维
晶格思维
最早听到Atomic write这个功能是从Fusion-io的DFS文件系统对于数据库的性能优化上。从字面意义上来说,它的意思是IO写入操作相对于其他操作来说,是一个单步的动作。实际上,对于一个IO操作来说,在SSD内部的实现是一个复杂的过程,需要牵涉到很多步骤,因此通常的IO操作并不是一个单步的动作。为了支持原子写,SSD需要通过一个特殊的设计,保证从用户的角度来看,好像这个动作是单步的。
为了说明这个问题,先看一个多线程程序设计中常见的多线程同步问题。在这个例子中,设置了32个线程对同一个变量进行设置。
unsigned int bitmap = 0;
void *setbit_thread(void *opt)
{
bitmap |= 1UL << pos;
return NULL;
}
int main(int argc, void **argv)
{
pthread_t thread[32];
for (int i = 0; i != 32; i++)
{
pthread_create(&thread[i], NULL, &setbit_thread, (void *)i);
}
for (int i = 0; i != 32; i++)
{
void *ret;
pthread_join(&thread[i]&#