Многопоточность в Pawn. Так же есть возможность синхронизировать потоки (пример ObjectStreamer), что очень важно для разработки своих проектов с использование потоковВнимание:
PAWN is not designed to be multi-threaded and there are no guarantees AT ALL on your data the moment you introduce threads. |
Неправильное использование плагина может привести к неработоспособности мода!Использование:
#include <thread>
- Добавлена новая функция native CreateThreadEx( const pubname[ ] );
- Первый релиз.
native CreateThread( const pubname[ ] ); // Создает поток по указанному public, вернет ид потока
native CreateThreadEx( const pubname[ ] );
native DestroyThread( threadid );
native SleepThread( milliseconds ); // Использовать в самом потоке (public)
native LockThread( threadid ); // Синхронизация потока, вернет ид замка
native UnLockThread( lockid );
С CreateThread
new tickid;
public OnGameModeInit()
{
tickid = CreateThread( "MyFunction" );
}
public OnGameModeExit()
{
DestroyThread( tickid );
}
public MyFunction( threadid )
{
printf( "tick(%d)...", threadid );
SleepThread( 1000 );
}
С CreateThreadEx
new bool:active;
new tickid;
public OnGameModeInit()
{
tickid = CreateThreadEx( "MyFunction" );
}
public OnGameModeExit()
{
active = false;
}
public MyFunction( threadid )
{
active = true;
while ( active )
{
printf( "tick(%d)...", threadid );
SleepThread( 1000 );
}
}
Thread(.inc + .dll + .so)
Thread Source
Thread(.inc + .dll + .so)
Thread Source
Thread Example(server time и object sreamer через потоки)
9 метров исходника? (51 в распакованном виде) оО
Где то подобное видел, это обновление чужого плагина или собственный? |
Ну я так понял для создания потоков использовалась библиотека http://www.boost.org/ ?
|
Да, вспомнил где видел. http://www.samp-rus.com/forum/34-17031
Конспиратор блин. Я тебя не узнаю |
По-моему ссылки на сторонние проекты запрещены тут... И помнится, что 009 делал подобный.
|
В чём суть CreateThreadEx ? Судя по примеру, в обычный CreateThread нельзя засунуть к примеру while ? оО
|