Производительность...
Спасибо.
Вот тут написал прогу и она производит большие вычисления, сделал прогресс бар(шоб видно было на каком этапе), но заметно уменьшилась скорость работы. Можно ли както шото сделать.
Спасибо.
Не послушался моего совета про отдельный поток для вычислений? Пошел по более "легкому" пути... 8)
P.S. Мой юбилейный пост (256).
>для вычислений? Пошел по более "легкому" пути...
>8)
А это как, покажи если не трудно. Плиз.
:-? :???: :roll:
А если тебе не надо будет общие данные пользовать, то тогда это еще и просто, ибо избавляет от необходимости семафоров, мутексов и т.п.
>Не послушался моего совета про отдельный поток
>для вычислений? Пошел по более "легкому" пути...
>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 );