相关疑难解决方法(0)

多个线程从同一个文件读取

我的平台是windows vista 32,带有visual c ++ express 2008.

例如:

如果我有一个包含4000个字节的文件,我可以同时从文件中读取4个线程吗?并且每个线程访问文件的不同部分.

线程1读取0-999,线程2读取1000 - 2999等.

请举一个C语言的例子.

c c++ file-io

10
推荐指数
2
解决办法
3万
查看次数

(Windows)同时打开同一文件

我试图在Windows中同时打开一个文件进行书写和阅读.我有一个程序(每一秒)写入文件,一个程序从中读取.在unix中它完美地工作但它在Windows中不起作用(我无法打开已经打开的文件).我用fopen()打开文件.

我怎么解决这个问题?

EDIT2:

签出_fsopen它使用FILE *,并相应地设置共享标志.

编辑:

首先,一些代码:这是我用来打开文件的方式

   FILE* f = NULL;
        int res = fopen_s(&f, "c:\\temp\\File1.txt", "w");
        if (res != 0) return;

        while (true) {
            Sleep(1000);
            fprintf_s(f , "Some data");
        }
        fclose(f); 
Run Code Online (Sandbox Code Playgroud)

阅读是在其他应用程序中,但确实如此fscanf.

固定代码:

char d[] = "data";


HANDLE h = CreateFile("c:\\temp\\f.txt", GENERIC_READ | GENERIC_WRITE,
    FILE_SHARE_WRITE | FILE_SHARE_READ, NULL, CREATE_ALWAYS, /*FILE_ATTRIBUTE_NORMAL*/ FILE_FLAG_WRITE_THROUGH, NULL);

if (h == INVALID_HANDLE_VALUE) return 0;

DWORD bytesW;
while(true) {
    Sleep(100);
        WriteFile(h, d, strlen(d), &bytesW, NULL);
}

CloseHandle(h);
return 0; 
Run Code Online (Sandbox Code Playgroud)

c c++ windows

6
推荐指数
1
解决办法
2894
查看次数

标签 统计

c ×2

c++ ×2

file-io ×1

windows ×1