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

Потоки. Основа. - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Небольшая ассемблеровская вставка http://www.cyberforum.ru/cpp-beginners/thread516311.html
Доброго вечера. Данный код создает одномерный массив. int main() { int n=4; int *a = new int ; for(int i=0;i<n;i++){ cin>>a; } return 0;
C++ Ошибка: forbids declaration of 'magic' with no type expected ';' before '.' token пишет "forbids declaration of 'magic' with no type expected ';' before '.' token" не могу найти где ? #include <iostream> #include <iomanip> #include <conio.h> #include <cmath> #include... http://www.cyberforum.ru/cpp-beginners/thread516306.html
C++ Омега код Элиаса+работа с потоками.
Задание: Нужно создать 2 функции, одна из бинарного файла будет переводить в число Элиаса, а вторая наоборот. Я хочу считывать по байту, каким потоком мне лучше достать данные? bool toElias (...
C++ Вывод информации о файле
Добрый день форумчане. Кто подскажет,суть задачи - вывести информацию о файле. может быть есть какие-то функции которые в этом помогут? файлы могут быть открыты произвольные.....
C++ Запись и чтение в файл http://www.cyberforum.ru/cpp-beginners/thread516295.html
Вариант 1 Написать программу, которая считывает из текстового файла три предложения и выводит их в обратном порядке. Вариант 2 Написать программу, которая считывает текст из файла и выводит на...
C++ Очередь Описать структуру с именем TRAIN, содержащую следующие поля: - название пункта назначения - номер поезда - время отправления Написать программу, выполняющую следующие действия: - ввод с... подробнее

Показать сообщение отдельно
Gepar
1177 / 533 / 20
Регистрация: 01.07.2009
Сообщений: 3,517
11.03.2012, 20:22
А почему вы пользуетесь какой-то CreateThread вместо того чтобы использовать _beginthread?
Вот вам в тему заодно пример из книги Петзолда на мультипотоковость
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
#include <windows.h>
#include <process.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
 
#define REP 1000000 // 100 000
 
#define STATUS_READY 0
#define STATUS_WORKING 1
#define STATUS_DONE 2
 
#define WM_CALC_DONE (WM_USER+0)
#define WM_CALC_ABORTED (WM_USER+1)
 
typedef struct
{
    HWND hwnd;
    BOOL bContinue;
} 
PARAMS, *PPARAMS;
 
LRESULT APIENTRY WndProc(HWND, UINT, WPARAM, LPARAM);
 
int WINAPI WinMain (HINSTANCE hInstance, HINSTANCE, PSTR szCmdLine, int iCmdShow)
{
    static char szAppName[]="BigJob1";
    MSG msg;
    HWND hwnd;
 
    WNDCLASSEX wndclass;
 
    ZeroMemory(&wndclass, sizeof(wndclass));
 
    wndclass.cbSize=sizeof(wndclass);
    wndclass.style=CS_HREDRAW|CS_VREDRAW;
    wndclass.lpfnWndProc=WndProc;
    wndclass.hInstance=hInstance;
    wndclass.hIcon=LoadIcon(NULL, IDI_APPLICATION);
    wndclass.hCursor=LoadCursor(NULL, IDC_ARROW);
    wndclass.hbrBackground=(HBRUSH) GetStockObject(WHITE_BRUSH);
    wndclass.lpszClassName=szAppName;
    wndclass.hIconSm=LoadIcon(NULL, IDI_APPLICATION);
    RegisterClassEx(&wndclass);
 
    hwnd=CreateWindow(szAppName, "Multithreading Demo", WS_OVERLAPPEDWINDOW,
        CW_USEDEFAULT, CW_USEDEFAULT,
        CW_USEDEFAULT, CW_USEDEFAULT,
        NULL, NULL, hInstance, NULL);
    ShowWindow(hwnd, iCmdShow);
    UpdateWindow(hwnd);
 
    while(GetMessage(&msg, NULL, 0, 0))
    {
        TranslateMessage(&msg);
        DispatchMessage(&msg);
    }
    return msg.wParam;
}
 
void Thread(PVOID pvoid)
{
    double A=1.0;
    INT i;
    LONG lTime;
    PPARAMS pparams;
 
    pparams=(PPARAMS) pvoid;
    
    lTime=GetCurrentTime();
    for(i=0;i<REP && pparams->bContinue;i++)
        A=tan(atan(exp(log(sqrt(A*A)))))+1.0;
    if(i==REP)
    {
        lTime=GetCurrentTime()-lTime;
        SendMessage(pparams->hwnd, WM_CALC_DONE, 0, lTime);
    }
    else
        SendMessage(pparams->hwnd, WM_CALC_ABORTED, 0, lTime);
    _endthread();
}
 
LRESULT CALLBACK WndProc(HWND hwnd, UINT iMsg, WPARAM wParam, LPARAM lParam)
{
    static char *szMessage[]={"Ready (left mous button begins)",
        "Working (right mouse button aborts)",
        "%d repetitions in %ld msec"};
    static INT iStatus;
    static LONG lTime;
    static PARAMS params;
    char szBuffer[64];
    HDC hdc;
    PAINTSTRUCT ps;
    RECT rect;
 
    switch(iMsg)
    {
    case WM_LBUTTONDOWN:
        if(iStatus==STATUS_WORKING)
        {
            MessageBeep(0);
            return 0;
        }
        iStatus=STATUS_WORKING;
 
        params.hwnd=hwnd;
        params.bContinue=TRUE;
 
        _beginthread(Thread, 0, &params);
        InvalidateRect(hwnd, NULL, TRUE);
        return 0;
 
    case WM_RBUTTONDOWN:
        params.bContinue=FALSE;
        return 0;
 
    case WM_CALC_DONE:
        lTime=lParam;
        iStatus=STATUS_DONE;
        InvalidateRect(hwnd, NULL, TRUE);
        return 0;
 
    case WM_CALC_ABORTED:
        iStatus=STATUS_READY;
        InvalidateRect(hwnd, NULL, TRUE);
        return 0;
 
    case WM_PAINT:
        hdc=BeginPaint(hwnd, &ps);
 
        GetClientRect(hwnd, &rect);
 
        wsprintf(szBuffer, szMessage[iStatus], REP, lTime);
 
        DrawText(hdc, szBuffer, -1, &rect, DT_SINGLELINE|DT_CENTER|DT_VCENTER);
        EndPaint(hwnd, &ps);
        return 0;
 
    case WM_DESTROY:
        PostQuitMessage(0);
        return 0;
    }
    return DefWindowProc(hwnd, iMsg, wParam, lParam);
}
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru