Вообщем шеф на работе вообще с ума сошел и для повышения квалификации,определения навыков сотрудников дал задание,написать программу на любом языке использующий WinAPI.
Что должна делать программа?запускаешь программу и она ждет пока в папке появится текстовый документы или несколько документов в которых написано откуда и куда копировать какие файлы,например,текстовик,а там C:\\temp\ D:\\Folder,а так же еще должна быть возможность копирования файлов по маске,например все *jpg файлы.
Я в не силен в кодинге,но было оговорено вроде что-то типа вся программа на потоках построена должна быть и дали файлик мне,там типа условий и потоков:
- существует отдельная папка, где располагаются задания
- задания представляют собой простой текстовый файл, состоящий из двух частей - откуда и куда, с возможностью задания маски
- программа отслеживает наличие какого-либо файла в папке. Как только он появляется, начинается выполнение задания
- по завершению задания, файл с заданием удаляется
- для каждого отдельного задания запускается отдельный поток
---------------------------------------------------------------
Для работы с потоками используются функция CreateThread.
ПОТОКИ
HANDLE CreateThread(
LPSECURITY ATTRIBUTES ProcAttr,
SIZT_T StackSize,
LPTHREAD_START_ROUTINE Func,
LPVOID Params,
DWORD Flags,
LPWORD ThreadId)
1) Показывает NULL
2) Размер стэка зависит от того, что делает поток
3) Функция, которая будет запущена в качестве потока
4) Параметр, который попадает в функцию как данные
5) Создать, но не запускать
6) Iв потока
VOID ExitThread(DWORD ExitCode)
Завершение потока.
BOOL TerminateThread(HANDLE h,
DWORD ExitCode)
DWORD [Suspend/Resume] Thread(HANDLE h)
Suspend – приостановить работу потока
Resume – возобновить работу потока
Действие функции Suspend является накапливаемым (если два раза запустить функцию SuspendThread одному и тому же потоку, то необходимо вызвать дважды ResumeThread)
BOOL SwitchToThread()
Вызвать планировщик системы.
DWORD SetThreadAffinitiMask(HANDLE h,
DWORD NetMask)
Уст. множество процессоров, на которых поток может работать.
Результат – предыдущая маска, в которой все работало
DWORD SetThreadIdealProcessor(HANDLE h,
DWORD NProc)
Устанавливаем для потока предпочитаемый процессор. Если все равно какой процессор, то вместо NProc ставим константу MAXIMUM_PROCESSOR.
Кодеры,кто возьмется мне помочь с этим делом?В долгу никогда не остаюсь,все будут довольны.Буду признателен за помощь
Что должна делать программа?запускаешь программу и она ждет пока в папке появится текстовый документы или несколько документов в которых написано откуда и куда копировать какие файлы,например,текстовик,а там C:\\temp\ D:\\Folder,а так же еще должна быть возможность копирования файлов по маске,например все *jpg файлы.
Я в не силен в кодинге,но было оговорено вроде что-то типа вся программа на потоках построена должна быть и дали файлик мне,там типа условий и потоков:
- существует отдельная папка, где располагаются задания
- задания представляют собой простой текстовый файл, состоящий из двух частей - откуда и куда, с возможностью задания маски
- программа отслеживает наличие какого-либо файла в папке. Как только он появляется, начинается выполнение задания
- по завершению задания, файл с заданием удаляется
- для каждого отдельного задания запускается отдельный поток
---------------------------------------------------------------
Для работы с потоками используются функция CreateThread.
ПОТОКИ
HANDLE CreateThread(
LPSECURITY ATTRIBUTES ProcAttr,
SIZT_T StackSize,
LPTHREAD_START_ROUTINE Func,
LPVOID Params,
DWORD Flags,
LPWORD ThreadId)
1) Показывает NULL
2) Размер стэка зависит от того, что делает поток
3) Функция, которая будет запущена в качестве потока
4) Параметр, который попадает в функцию как данные
5) Создать, но не запускать
6) Iв потока
VOID ExitThread(DWORD ExitCode)
Завершение потока.
BOOL TerminateThread(HANDLE h,
DWORD ExitCode)
DWORD [Suspend/Resume] Thread(HANDLE h)
Suspend – приостановить работу потока
Resume – возобновить работу потока
Действие функции Suspend является накапливаемым (если два раза запустить функцию SuspendThread одному и тому же потоку, то необходимо вызвать дважды ResumeThread)
BOOL SwitchToThread()
Вызвать планировщик системы.
DWORD SetThreadAffinitiMask(HANDLE h,
DWORD NetMask)
Уст. множество процессоров, на которых поток может работать.
Результат – предыдущая маска, в которой все работало
DWORD SetThreadIdealProcessor(HANDLE h,
DWORD NProc)
Устанавливаем для потока предпочитаемый процессор. Если все равно какой процессор, то вместо NProc ставим константу MAXIMUM_PROCESSOR.
Кодеры,кто возьмется мне помочь с этим делом?В долгу никогда не остаюсь,все будут довольны.Буду признателен за помощь