[Plugin] Многопоточность (MultiThread)
#1

Описание:
Многопоточность в Pawn. Так же есть возможность синхронизировать потоки (пример ObjectStreamer), что очень важно для разработки своих проектов с использование потоков
Внимание:
Quote:

PAWN is not designed to be multi-threaded and there are no guarantees AT ALL on your data the moment you introduce threads.

Неправильное использование плагина может привести к неработоспособности мода!
Использование:
pawn Код:
#include <thread>
Лог:
  • 0.1.6
    - Добавлена новая функция native CreateThreadEx( const pubname[ ] );
  • 0.1.5
    - Первый релиз.
Natives:
pawn Код:
native CreateThread( const pubname[ ] ); // Создает поток по указанному public, вернет ид потока
native CreateThreadEx( const pubname[ ] );
native DestroyThread( threadid );
native SleepThread( milliseconds ); // Использовать в самом потоке (public)
native LockThread( threadid ); // Синхронизация потока, вернет ид замка
native UnLockThread( lockid );
Примеры:
С CreateThread
pawn Код:
new tickid;

public OnGameModeInit()
{
    tickid = CreateThread( "MyFunction" );
}

public OnGameModeExit()
{
    DestroyThread( tickid );
}

public MyFunction( threadid )
{
    printf( "tick(%d)...", threadid  );
       
    SleepThread( 1000 );
}
С CreateThreadEx
pawn Код:
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 );
    }
}
Скачать:
Reply


Messages In This Thread

Forum Jump:


Users browsing this thread: 7 Guest(s)