日期:2014-05-16  浏览次数:20639 次

linux 多线程把内存中的内容写入文件怎样效率最高呢...???
如题,经测试,我开一个线程写内存中的内容到磁盘,写效率有100M/s,但如果我开2路或者多路线程,写效率就只有10M/s了,我要怎么做,在开多线程的时候效率才高呢(至少要达到50M/s,当然越高越好),求大神指点...!!!!
我的写入线程函数如下:
void run()
{
int fd2;
char buffer[10] = {0},storeRout[50] = {0};
printf("thread.........write........fun4\n");

strcat(storeRout, StoreRoute);
strcat(storeRout, "2.txt");
//printf(".................storeRout = %s\n", storeRout);
fd2 = open(storeRout, O_CREAT|O_RDWR|O_EXCL, 0777);
if(0 > fd2)
{
if(EEXIST == errno)
{
fd2 = open(storeRout, O_RDWR);
if(-1 == fd2)
{
perror("fd2....1.....open");
exit(-1);
}
}
else
{
perror("fd2....2....open");
exit(-1);
}
}

while(1)
{
write(fd2, buffer, writeBuf);
}
}
Linux 多线程 io读写

------解决方案--------------------
我说过了, 普通磁盘单线程4KB每write最快,同时写多文件的话注意做内存cache到足够大后顺序写出到单文件,避免频繁在文件间切换引起磁道滑动。