Nếu bạn không viết thư cho họ, không cần phải chăm sóc điều kiện đồng bộ/chủng tộc.
Chỉ cần mở tệp có tính năng đọc được chia sẻ dưới dạng các tay cầm khác nhau và mọi thứ sẽ hoạt động. (nghĩa là, bạn phải mở tệp trong ngữ cảnh của chuỗi thay vì chia sẻ cùng một tệp xử lý).
#include <stdio.h>
#include <windows.h>
DWORD WINAPI mythread(LPVOID param)
{
int i = (int) param;
BYTE buf[1000];
DWORD numread;
HANDLE h = CreateFile("c:\\test.txt", GENERIC_READ, FILE_SHARE_READ,
NULL, OPEN_EXISTING, 0, NULL);
SetFilePointer(h, i * 1000, NULL, FILE_BEGIN);
ReadFile(h, buf, sizeof(buf), &numread, NULL);
printf("buf[%d]: %02X %02X %02X\n", i+1, buf[0], buf[1], buf[2]);
return 0;
}
int main()
{
int i;
HANDLE h[4];
for (i = 0; i < 4; i++)
h[i] = CreateThread(NULL, 0, mythread, (LPVOID)i, 0, NULL);
// for (i = 0; i < 4; i++) WaitForSingleObject(h[i], INFINITE);
WaitForMultipleObjects(4, h, TRUE, INFINITE);
return 0;
}
Nghe như bài tập về nhà. Bạn sử dụng thư viện luồng nào? Bạn bị kẹt ở đâu? – dirkgently
không phải là một bài tập về nhà, dude, tôi chỉ muốn biết nếu nó có thể hay không. Tôi thậm chí không biết cách làm, vì hầu hết giải pháp được đăng trên google không giống như tệp truy cập song song đúng, tất cả đều sử dụng khóa – anru