Всем привет, есть задача - Основной поток выделяет блок памяти размеров 200кб, заполняет его случайными числами и создает второй поток, который записывает данные в файл поблочно (размер блока должен быть 5кб)
Я попытался это реализовать, но возникли несколько вопросов, во-первых как получить доступ в методе потока Mythread достать переменные из main метода, так же не смог разобраться как копировать не все сразу, а поблочно, и у меня в принципе возник вопрос в той степи ли я думаю, или все это вообще по-другому реализовывать нужно?
#include "pch.h"
#include <iostream>
#include <windows.h>
#include "conio.h"
#include <fstream>
#include <string>
using namespace std;
DWORD WINAPI Mythread(LPVOID);
int main()
{
//create 200kb buffer
const int Length = 1 * 1024;
unsigned char *buffer = new unsigned char[Length];
//add random numbers in buffer
for (int i = 0; i <= Length; i++)
{
HANDLE threat = CreateThread(NULL, 0, Mythread, main, 0, NULL);
buffer[i] = (int)rand() % Length + 1;
cout << (int)buffer[i] << " ";
cout << endl;
if (i == Length)
{
cout << " Numbers Added";
}
}
return 0;
}
DWORD WINAPI Mythread(HANDLE main)
{
ofstream out; // поток для записи
out.open("c:\\Test\\1.txt"); // окрываем файл для записи
//Creating and filling
if (out.is_open())
{
for (int i = 0; i <= Length; i++) {
out << std::to_string(buffer[i]) << " ";
}
}
out.close();
//delete[]buffer;
return 0;
}
Сборка персонального компьютера от Artline: умный выбор для современных пользователей