Использование FastPointer
Проблема заключается в моем представлении о многопоточности. Если судить с примера звука в блице. Команда EmitSound(S,E) издает звук, и в не зависимости от того какой он длинны (3сек, 15сек и >) вся другая логика продолжается. То есть я делаю вывод что обработка звука пошла в другой независимый поток.
Я скачал FastPointer библиотеку и разбирал примеры лежащие в ней. Хотел б рассмотреть конкретный случай с вызовом функций: Код:
MyFunctionFirstPointer = FunctionPointer();Это как я понимаю процесс Помогите пожалуйста понять, как в принципе устроена многопоточность и в частности эта библиотека? Приветствуется посылания на хорошие статейки...:) |
Ответ: Использование FastPointer
Цитата:
Цитата:
Цитата:
Цитата:
Если кратко Есть процесс, у него есть основной поток, и может быть несколько побочных потоков. Проще говоря каждый поток представляет собой функцию. Потоками рулит операционная система. Можно насильно указать потоку на каком процессоре ему выполняться, иначе это решает система и ее планировщик. Планировщик отдает каждому процессу и потоку определенное кол-во процессорного времени, понемногу продвигая каждый из потоков\процессов (виртуальная мультипоточность). Т.к. потоки работают параллельно, общение между ними (чтение\запись данных) нужно синхронизировать, для этого в системе существуют несколько вещей (критические секции, мутексы, семафоры, атомарные операторы и т.п.) В случае с блицем тебе нужно передать полученый адрес в функцию создания потока (в винде это CreateThread, в этой библиотеке кстати так-же называется ), так-же нужно позаботиться о том, чтобы передать в поток определенные данные (в той же системный CreateThread можно указать адрес блока памяти). Вообще в fastpointer есть два примера работы с потоками - Example_ThreadUse и Example_ThreadUse2, смотри их. |
Ответ: Использование FastPointer
Цитата:
Просто сам не додумался до конца досмотреть. Цитата:
Цитата:
В общем сенкс. :super: |
Ответ: Использование FastPointer
На практике возникла проблема. Может кто сможет помочь, у меня во второй поток запущена функция вида:
Код:
Function UpdChunks() (Эти кусочки - это места где начинает строится чанк, но до конца как видно дело не доходит...) Кто нибудь уже пользовался библиотекой? Она нормальная? Или это я что то не то делаю? |
Ответ: Использование FastPointer
Цитата:
А вообще забудь про мультипоточность в блице для чего-то кроме обычных программ, нет гарантии что 3д\2д будет корректно работать в разных потоках. На твоем-же примере: Цитата:
Ты просто выбрал не тот инструмент. |
Ответ: Использование FastPointer
Сенкс. Понял...
|
Ответ: Использование FastPointer
Использовал FAST Pointer Thread чтобы RakNET был не зависим от рендера Blitz3D - результат положительный.
(а то до этого из 200 передач на сервер передавались 150, и обратно на клиент 3 штуки) а теперь при нажатии клавиши мне инфа передаётся сразу туда-сюда. сервер на blitzmax, клиент blitz3d. |
Часовой пояс GMT +4, время: 07:40. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot