文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>SDL封装的系统操作

SDL封装的系统操作

时间:2010-08-21  来源:bluedrum

Andrew Haung [email protected]   SDL封装很多操作系统的功能,为了保证SDL程序可移植性,最好尽量用这一些封装函数,哪果没有的话,才使用各种操作本地函数。    对于如何封各个操作系统的功能,   1.延时函数:    void SDL_Delay(Uint32 ms); #以微秒单位,最小为10ms.   2.取系统运行时间:     Uint32 SDL_GetTicks(void); #返回微秒数
  3.线程    它使用SDL_Thread数据结构.它使用接近于POSIX Thead 接口,    它使用SDL_CreateThread()创建线程    等待某一个线程退出 SDL_WaitThread();    杀列一个线程  SDL_KillThread();

#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);
}

4.判断系统的字节序

  #include "SDL_endian.h"
  定义在宏上SDL_BYTEORDER ,如果是小端字节序则等于SDL_LIL_ENDIAN
,大端字节序是SDL_BIG_ENDIAN

5.信号量

    采用SDL_sem结构,操作跟Posix 信号量一致

    SDL_sem * SDL_CreateSemaphore(Uint32 initial_value);#创建信号量

    void  SDL_DestroySemaphore(SDL_sem *sem); #销毁信号量

    int SDLCALL SDL_SemWait(SDL_sem *sem);  #类似于sem_wait()

    int  SDL_SemTryWait(SDL_sem *sem);#类似于 sem_trywait();

     int SDLCALL SDL_SemWaitTimeout(SDL_sem *sem, Uint32 ms);#类似于sem_timedwait();

   int  SDL_SemPost(SDL_sem *sem); #相当于sem_post;

    

   


6.互斥锁SDL_Mutex

  它的原型类似于 pthread_mutex.采用用于加锁,便是由信号量的实现的。

     SDL_mutex * SDLCALL SDL_CreateMutex(void);创建互斥量

      SDL_LockMutex(m); //加锁

      SDL_UnlockMutex(m);//解锁

     void SDLCALL SDL_DestroyMutex(SDL_mutex *mutex);销毁互斥量

5

7.条件变量

   SDL_cond :原型类似pthread_cond_t.用于事件同步

   SDL_cond *  SDL_CreateCond(void); #创建条件变量

    void SDL_DestroyCond(SDL_cond *cond); #关闭条件变量

     int SDL_CondSignal(SDL_cond *cond);#通知条件成立,类似于pthread_cond_signal()

    int  SDL_CondBroadcast(SDL_cond *cond); #通知条件类似于 pthread_cond_broadcast();一次性通知所有阻塞条件

    int SDLCALL SDL_CondWait(SDL_cond *cond, SDL_mutex *mut);#类似于pthread_cond_wait();

 

8.定时器    int SDLCALL SDL_SetTimer(Uint32 interval, SDL_TimerCallback callback);
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载