Форум программистов, компьютерный форум CyberForum.ru

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) + … . В сумме учитывать все слагаемые, модуль которых больше . С помощью Ln1 найти приближенное значение ln(1 + x) для данного x при шести данных . :scratch:
C++ Значения матрицы найти 2 наибольших значения из четных столбцов и их индексы записать функцией http://www.cyberforum.ru/cpp-beginners/thread333026.html
C++ Получить из кода символ
Нужно как-то перегнать код символа (по таблице ASCII символов) в символ. Как это можно сделать? Допустим у меня есть строка string str1. Я хочу получить записать в неё символ с кодом 65, как это сделать? Вариант "запиши туда букву A и всё" не подойдёт так как программа будет писать символы по кодам и я заранее не знаю какой код будет, весь алфавит case'ом пробегать будет по быдлокодерски же....
C++ Различные приемы работы с матрицами - готовое решение
подрихтовал для матриц и массивов 2 с лишним часа жизни >_< #include <iostream> #include <time.h> using std::cout; using std::endl; using std::cin; void matrPrint ( int **, int, int ); void matrSortUp ( int **, int, int );
C++ Ответ на упражнение, которое я задал в другой теме про перевод диагональных координат в стандартные http://www.cyberforum.ru/cpp-beginners/thread332999.html
Всё просто довольно. Как и обещал, две строки. Чтобы не говорили, что я типа в кустах struct koordinati_ { int nomer_stroki; int nomer_stolbtsa; koordinati_ }; template <class T> bool matrix<T>::f_perevod_koordinat (koordinati_* koordinati, int y, int x) { koordinati->nomer_stroki= y- ((y- kol_vo_strok+ 1)+ abs(y- kol_vo_strok+ 1))/2- x;
C++ Вставить в строку s содержимое s1 начиная с позиции n Помогите пожалуйста написать программу! Вставить в строку s содержимое s1 начиная с позиции n. То есть сначала идут n-первых символов s, тогда символы s1, а дальше-те символы, которые были у s до вставки s1, начиная с позиции n. Это нужно сделать не используя библиотеки <string.h>, а создать собственную функцию Insert (s, s1, n) ... Заранее спасибо! подробнее

Показать сообщение отдельно
goto
 Аватар для goto
76 / 34 / 4
Регистрация: 04.04.2011
Сообщений: 78
Записей в блоге: 1
15.07.2011, 12:42  [ТС]     Two Threads + CriticalSection
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% процессорного времени?
 
Текущее время: 20:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru