Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Производительность...

1.9K
09 июля 2003 года
-cheese-
25 / / 01.07.2003
Вот тут написал прогу и она производит большие вычисления, сделал прогресс бар(шоб видно было на каком этапе), но заметно уменьшилась скорость работы. Можно ли както шото сделать.
Спасибо.
3
09 июля 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by -cheese-
Вот тут написал прогу и она производит большие вычисления, сделал прогресс бар(шоб видно было на каком этапе), но заметно уменьшилась скорость работы. Можно ли както шото сделать.
Спасибо.



Не послушался моего совета про отдельный поток для вычислений? Пошел по более "легкому" пути... 8)

P.S. Мой юбилейный пост (256).

1.9K
10 июля 2003 года
-cheese-
25 / / 01.07.2003
>Не послушался моего совета про отдельный поток
>для вычислений? Пошел по более "легкому" пути...
>8)

А это как, покажи если не трудно. Плиз.

:-? :???: :roll:
460
10 июля 2003 года
Berg
261 / / 27.03.2003
TThread - это действительно сила.
А если тебе не надо будет общие данные пользовать, то тогда это еще и просто, ибо избавляет от необходимости семафоров, мутексов и т.п.
3
10 июля 2003 года
Green
4.8K / / 20.01.2000
Цитата:
Originally posted by -cheese-
>Не послушался моего совета про отдельный поток
>для вычислений? Пошел по более "легкому" пути...
>8)

А это как, покажи если не трудно. Плиз.

:-? :???: :roll:



Как обернута работа с потоками в VCL я не знаю, т.к. сам предпочитаю WTL, а в Win32 API создание потока выглядит след. образом:

#include <windows.h>
#include <conio.h>

DWORD WINAPI ThreadFunc( LPVOID lpParam )
{
char szMsg[80];

wsprintf( szMsg, "Parameter = %d.", *(DWORD*)lpParam );
MessageBox( NULL, szMsg, "ThreadFunc", MB_OK );

return 0;
}

VOID main( VOID )
{
DWORD dwThreadId, dwThrdParam = 1;
HANDLE hThread;
char szMsg[80];

hThread = CreateThread(
NULL, // no security attributes
0, // use default stack size
ThreadFunc, // thread function
&dwThrdParam, // argument to thread function
0, // use default creation flags
&dwThreadId); // returns the thread identifier

// Check the return value for success.

if (hThread == NULL)
{
wsprintf( szMsg, "CreateThread failed." );
MessageBox( NULL, szMsg, "main", MB_OK );
}
else
{
_getch();
CloseHandle( hThread );
}
}

Неосредственно создается поток при вызове

hThread = CreateThread(
NULL, // no security attributes
0, // use default stack size
ThreadFunc, // thread function
&dwThrdParam, // argument to thread function
0, // use default creation flags
&dwThreadId); // returns the thread identifier

В новом потоке выполняется функция
DWORD WINAPI ThreadFunc( LPVOID lpParam );

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог