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

Остановка второго потока останавливает также первый поток по непонятной причине - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Не считает ответ(интеграл) http://www.cyberforum.ru/cpp-beginners/thread795601.html
В ответе пишет 1,#INFOO #include "stdafx.h" //Integral po formule Simpsona #include <STDIO.h> #include <MATH.h> #include <CONIO.h> #include <iostream> using namespace std; #define n 100 int i;
C++ Как работать с float векторами? Есть функция: void Vectors_Init( const float *VecStart, const float *VecEnd ) Как допустим сделать вычисления ? С VecEnd вычесть VecStart Ну и немного больше информации хотелось бы знать,какую вы можете предоставить по этому. Я читал про это,но как-то всё темно.. http://www.cyberforum.ru/cpp-beginners/thread795582.html
C++ Ввести с клавиатуры строку символов
Ввести с клавиатуры строку символов S1. Признак окончания ввода строки - нажатие клавиши "Ввод". Программа должна содержать перегруженную операцию «=», использование которой скопирует S1 в S2 . Исходную и преобразованную строки вывести в файл. Длина L >6-и, то выделяется подстрока { } скобках;
шифр Хилла C++
Никто не поможет с шифром Хилла?) я написал код на java и вопрос задавал в теме java , но там все молчат как партизаны :D вот мой java код) работаю на netbeans desctopapplication ) public void en() { char key={{'G','Y','B'},{'N','Q','K'},{'U','R','P'}}; String source = jTextField1.getText().toUpperCase(); int key_int=new int ; int source_int = new int;...
C++ Не работает += char* http://www.cyberforum.ru/cpp-beginners/thread795546.html
Нужно использовать код вида: char* strID = "ABC"; strID += "DEF"; strID += "xyz"; Суть задачи после отметания чекбоксов переменная будет увеличиваться, т.е. дописывать нужный текст, поэтому нужно как то прибавлять к ней типа как в строке чтобы после например верхних манипуляций получилось что char* strID = "ABCDEFxyz";
C++ Программы на ОПП С++. 911 Нашел в одной из тем программу написанную на запрос по контрольной работе по ООП С++ форумчаниным lemegeton. Эта контрольная подходит и для моего варианта. Просьба откликнуться lemegeton. Я новичок в ООП С++ и конкретно просьба моя заключается в помощи описания написанной программы и добавления комментариев в программу. Пожалуйста помогите. Программа во вложениях. Или если кто поможет буду очень... подробнее

Показать сообщение отдельно
Tolias28
202 / 117 / 2
Регистрация: 18.08.2010
Сообщений: 1,008
26.02.2013, 19:51     Остановка второго потока останавливает также первый поток по непонятной причине
Изучаю потоки и по ходу дела экспериментирую с ними в Visual Studio. Накидал код, который в первом потоке приостанавливает и возобновляет второй поток 1000 раз. А второй поток также себя останавливает в цикле каждые 10 миллисекунд с помощью такой строчки:
WaitForSingleObject(GetCurrentThread(), 10);

И вот по непонятной для меня причине цикл в первом потоке заступоривается еще на первых итерациях (у меня доходило максимум до 2-4 итерации). То есть, на консоли появляется такой вывод:
Остановка второго потока останавливает также первый поток по непонятной причине
и на этом все! Не могу понять почему так... Объясните пожалуйста, в чем причина. Огромное спасибо!

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
#include "stdafx.h"
#include <Windows.h>
#include <iostream>
#include <process.h>
 
using namespace std;
 
unsigned Counter;
 
unsigned __stdcall SecondThreadFunc( void* pArguments )
{
    cout << "In second thread...\n";
    while ( Counter < 1000000 )
    {
        WaitForSingleObject(GetCurrentThread(), 10);
        Counter++;
        cout << Counter;
    }
    cout << "Second thread exiting...\n";
    return 0;
}
 
int _tmain(int argc, _TCHAR* argv[])
{
    HANDLE hThread;
 
    printf( "Creating second thread...\n" );
    hThread = (HANDLE)_beginthreadex( NULL, 0, &SecondThreadFunc, NULL, 0, NULL);
    for(int i = 0; i < 1000; i++)
    {
        SuspendThread(hThread);
        cout << "i=" << i << "\n";
        ResumeThread(hThread);
    }
    SuspendThread(hThread);
    CloseHandle( hThread );
    cout << "end of program";
    cin.get();
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:47. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru