Введение в Simple DirectMedia Layer


Потоки


  • Создание простого потока

Создание потока делается через вызов функции SDL_CreateThread(). После успешного возврата из функции ваша функция теперь запущена одновременно с основным приложением в своем контексте задачи (стек, регистры и прочее) и может получать доступ к памяти и открытым файлам используемыми в основном приложении. 

Совет:

Второй аргумент для SDL_CreateThread() передается как параметр для  порожденного потока. Вы можете использовать его для передачи значений в стек или только как указатель на данные, которые будут использоваться в потоке.

Пример:

#include "SDL_thread.h" int global_data = 0; int thread_func(void *unused){    int last_value = 0;     while ( global_data != -1 ) {        if ( global_data != last_value ) {            printf("Data value changed to %d\n", global_data);            last_value = global_data;        }        SDL_Delay(100);    }    printf("Thread quitting\n");    return(0);} {    SDL_Thread *thread;    int i;     thread = SDL_CreateThread(thread_func, NULL);    if ( thread == NULL ) {        fprintf(stderr, "Unable to create thread: %s\n", SDL_GetError());        return;    }     for ( i=0; i<5; ++i ) {        printf("Changing value to %d\n", i);        global_data = i;        SDL_Delay(1000);    }     printf("Signaling thread to quit\n");    global_data = -1;    SDL_WaitThread(thread, NULL);}

<


- Начало -  - Назад -  - Вперед -