Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 23.01.2016
Сообщений: 35
1

Работа с потоками и виртуальной памятью

10.11.2016, 20:45. Показов 730. Ответов 0
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем добрый вечер. Есть задание:
Выделить виртуальную память. Два потока пишут слова в память, один поток считывает и выводит на экран.
Выполнить ту же задачу, но синхронизировать так, чтобы памятью владел только один поток в конкретный момент времени.

Я пробовал написать данную программу, но кажется выходит полный бред. Помогите с решением данного задания. Как синхронизировать потоки я вроде понимаю(Кажется через WaitForSingleObject и SetEvent). Главная моя проблема - это как через потоки в память записать слова, а потом их из этой же памяти считать через другой поток.

Вот мой ужасный и неработающий код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "stdafx.h"
#include "windows.h"
#include "iostream"
#include "malloc.h"
#include "stdlib.h"
#include "stdio.h"
using namespace std;
 
HANDLE q1, q2, q3;//Переменные для синхронизации
char **ptr_toscope = NULL;
char **ptr_toarray = NULL;
char* mass1[7] = {"Слово1"};
char* mass2[7] = {"Слово2"};
 
DWORD WINAPI Input1(LPVOID inum)//1 поток записи в память
{
    ptr_toscope = (char**)VirtualAlloc(NULL, 1024, MEM_RESERVE, PAGE_EXECUTE_READWRITE);//Резервируем память
    ptr_toarray = (char**)VirtualAlloc(ptr_toscope, 500, MEM_COMMIT, PAGE_EXECUTE_READWRITE);//Распределяем память
    ptr_toarray = mass1;
    return 0;
}
 
DWORD WINAPI Input2(LPVOID inum)//2 поток записи в память
{
    ptr_toscope = (char**)VirtualAlloc(NULL, 1024, MEM_RESERVE, PAGE_EXECUTE_READWRITE);//Резервируем память
    ptr_toarray = (char**)VirtualAlloc(ptr_toscope, 500, MEM_COMMIT, PAGE_EXECUTE_READWRITE);//Распределяем память
    ptr_toarray = mass2;
    return 0;
}
 
DWORD WINAPI Output(LPVOID inum)//Поток вывода слов из памяти
{
    cout << endl << "Вывод слов из памяти: " << endl;
    cout << endl << *(ptr_toarray + 1);
    return 0;
}
 
int main()
{
    setlocale(LC_ALL, "Russian");
    //Создаем 3 потока
    DWORD iThread1, iThread2, iThread3;
    HANDLE i1 = CreateThread(NULL, 0, Input1, NULL, 0, &iThread1);
    HANDLE i2 = CreateThread(NULL, 0, Input2, NULL, 0, &iThread2);
    HANDLE i3 = CreateThread(NULL, 0, Output, NULL, 0, &iThread3);
    system("Pause");
    return 0;
}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.11.2016, 20:45
Ответы с готовыми решениями:

Работа с виртуальной памятью
Процесс A выделяет память в адресном пространстве процесса B Процесс А записывает в выделенный блок памяти строку, введенную...

Работа с виртуальной памятью
ОЧЕНЬ ИНТЕРЕСНЫЙ ВОПРОС! Разбирал &quot;азы&quot; виртуальной памяти Там была статья про: ...процесс замещения страниц который можно выполнить...

Управление виртуальной памятью
Подскажите пожалуйста источники информации или книги какие. Есть задание: выяснить отличия управления виртуальной памятью всех версий...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
10.11.2016, 20:45
Помогаю со студенческими работами здесь

Что-то с виртуальной памятью
Кто подскажет от чего такое может быть: BCCode : 10000050 BCP1 : A1644D29 BCP2 : 00000000 BCP3 : F72C50A8 BCP4 : 00000000?...

Функции для работы с виртуальной памятью
Здравствуйте, помогите пожалуйста решить задачу: С помощью функций VirtualAlloc, VirtualQuery и VirtualFree вычислить значение функции ...

Преимущества Адресного пространства(виртуальной памяти) над физической памятью
Вечер добрый) Читаю Таненбаума, отвечаю на вопросы. Вопрос звучит так: &quot;В современных ОС адресное пространство процесса отделено от...

Реализовать алгоритм работы планировщика. Управление виртуальной памятью. Управление файловой системой
Разработка программы менеджера памяти. Свопинг. Сегментная схема организации памяти. Управление виртуальной памятью. Глобальное и локальное...

Программа "Управление виртуальной памятью"
Помогите срочно нужна программа на c# при помощи, которой можно будет увеличивать или уменьшать виртуальную память. Срочно надо.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему

Редактор формул (кликните на картинку в правом углу, чтобы закрыть)
Новые блоги и статьи
Бессерверный JavaScript: Разработка масштабируемых API с AWS Lambda
run.dev 14.03.2025
Но что такое бессерверные вычисления на самом деле? По сути, это модель облачных вычислений, где разработчик фокусируется исключительно на создании бизнес-логики, не тратя время на настройку. . .
Безопасность кода в C++26: Менеджеры ресурсов и висячие ссылки
NullReferenced 14.03.2025
C++ всегда был языком, предоставляющим разработчикам большие возможности и гибкость, но вместе с тем требующим ответственности. Одной из самых коварных проблем даже для опытных программистов остаются. . .
smart-agent proper interface settings (2025)
jigi33 14.03.2025
Smart-agent proper interface settings (mart 2025). (see screenshots to look at "Etalon" ARM)
Продвинутые настройки JVM
Javaican 14.03.2025
Стандартные параметры запуска JVM хороши для повседневной разработки, но совершенно недостаточны для высоконагруженных систем. Представьте, что вы запускаете финансовую платформу, обрабатывающую. . .
CI/CD для приложений Java с Azure DevOps и Docker
Mr. Docker 14.03.2025
Разработка современных Java-приложений немыслима без системы непрерывной интеграции и доставки (CI/ CD). Azure DevOps в сочетании с Docker предоставляет мощный инструментарий для создания таких. . .
Разработка на PHP и интернет вещей (IoT)
Jason-Webb 14.03.2025
Интернет вещей (IoT) произвел настоящую революцию в способах взаимодействия устройств с окружающим миром. В эпоху, когда холодильники сами заказывают молоко, а термостаты учатся вашим привычкам,. . .
Node.js 20: Новые возможности и улучшения производительно­сти
Reangularity 14.03.2025
Что же принёс нам релиз Node. js 20? В первую очередь, это существенные улучшения в производительности. Движок V8 получил серьёзные оптимизации, благодаря чему JavaScript-код выполняется заметно. . .
Безопасность кластеров Apache Kafka
Javaican 14.03.2025
Apache Kafka стал одним из ключевых компонентов современных архитектур, обрабатывающих потоки данных в режиме реального времени. Его используют тысячи компаний от стартапов до технологических. . .
Контейнеризация ML моделей с помощью Docker и Kubernetes
Mr. Docker 14.03.2025
Перенос ML-моделей из лаборатории в продакшн сопровождается целым комплексом проблем. Нередко код, который отлично работает на локальной машине, отказывается функционировать в промышленной среде. . . .
Организация масштабируемого хранилища с Apache Cassandra
Codd 14.03.2025
Изначально разработанная в Facebook, а затем переданная Apache Software Foundation, Cassandra сочетает в себе принципы Amazon's Dynamo и Google's BigTable. Эта комбинация создает уникальную. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru