Форум программистов, компьютерный форум, киберфорум
Наши страницы

Two Threads + CriticalSection - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ головоломка для знающих... http://www.cyberforum.ru/cpp-beginners/thread333058.html
Описать функцию Ln1(x, ) вещественного типа (параметры x,  — вещественные, |x| < 1,  > 0), находящую приближенное значение функции ln(1 + x): ln(1 + x) = x – x2/2 + x3/3 – … + (–1)n•xn+1/(n+1) +...
C++ Значения матрицы найти 2 наибольших значения из четных столбцов и их индексы записать функцией http://www.cyberforum.ru/cpp-beginners/thread333026.html
C++ Получить из кода символ
Нужно как-то перегнать код символа (по таблице ASCII символов) в символ. Как это можно сделать? Допустим у меня есть строка string str1. Я хочу получить записать в неё символ с кодом 65, как это...
C++ Различные приемы работы с матрицами - готовое решение
подрихтовал для матриц и массивов 2 с лишним часа жизни >_< #include <iostream> #include <time.h> using std::cout; using std::endl; using std::cin; void matrPrint ( int **, int, int );...
C++ Ответ на упражнение, которое я задал в другой теме про перевод диагональных координат в стандартные http://www.cyberforum.ru/cpp-beginners/thread332999.html
Всё просто довольно. Как и обещал, две строки. Чтобы не говорили, что я типа в кустах struct koordinati_ { int nomer_stroki; int nomer_stolbtsa; koordinati_ }; template <class T>...
C++ Вставить в строку s содержимое s1 начиная с позиции n Помогите пожалуйста написать программу! Вставить в строку s содержимое s1 начиная с позиции n. То есть сначала идут n-первых символов s, тогда символы s1, а дальше-те символы, которые были у s до... подробнее

Показать сообщение отдельно
goto
76 / 34 / 4
Регистрация: 04.04.2011
Сообщений: 78
Записей в блоге: 1
15.07.2011, 12:42  [ТС]
schdub
в WinAPI есть целый подкласс функций для потокобезопасной работы
да, я уже подглядел на мсдн как они там потоко-безопасно сравнивают...
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
...   
static bool UseResource()
   {
 
      //0 indicates that the method is not in use.
      if ( 0 == Interlocked::Exchange( usingResource, 1 ) )
      {
         Console::WriteLine( " {0} acquired the lock", Thread::CurrentThread->Name );
 
         //Code to access a resource that is not thread safe would go here.
         //Simulate some work
         Thread::Sleep( 500 );
         Console::WriteLine( " {0} exiting lock", Thread::CurrentThread->Name );
 
         //Release the lock
         Interlocked::Exchange( usingResource, 0 );
         return true;
      }
      else
      {
         Console::WriteLine( " {0} was denied the lock", Thread::CurrentThread->Name );
         return false;
      }
   }
...
Deviaphan
Проблема с кучей переменных решается их правильной организацией или перепроектированием приложения.
видимо так, что-то типа флаг(и) разрешения для групп переменных, поочередная работа потоков с данными, исполнение N- дочернего потока по запросу родительского.

Вопрос.

1й. можно ли разделить участок памяти между потоками, что бы они работали одновременно, каждый над своим участком? Мне кажется можно, надо лишь что бы они не писали и не читали из одного и того же участка одновременно, я прав? Завести, скажем, одну крит. секцию на некоторый участок памяти 1024байта 1ч = 0-512байт 2ч = 512-1024байт... и если поток не может получить доступ к крит. Секции = 1ч значит он может работать с другой 2-й частью памяти, и наоборот. Так наверное можно получить буст в вычислениях на мульти кор процах, или система и один поток распределит на ядра?

2й. Как отвести второму потоку скажем 10% процессорного времени?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru