代码之家  ›  专栏  ›  技术社区  ›  waffleman

SDL:在多线程程序中这样做安全吗?

  •  2
  • waffleman  · 技术社区  · 15 年前

    我有一个线程可以执行以下操作:

    • 初始化SDL
    • 存储指向SDL_曲面的指针
    • 进入循环并等待任何鼠标事件并处理它们

    在另一个线程中,有一个函数执行以下操作:

    • 获取指向SDL\u曲面的指针
    • SDL U锁面
    • 操纵像素
    • SDL\U是否解锁曲面
    • 调用SDL_Flip on the surface

    我在文档中读到,通常SDL lib函数调用都应该来自同一个线程。这包括直接改变SDL U表面吗?对曲面使用锁定和解锁功能如何?我认为这些锁定和解锁对旨在用于多线程的情况。

    SDL U翻转功能怎么样?如果需要从初始化SDL的SDL线程调用它,那么我可以简单地发出一个用户事件的信号并在另一个线程中处理它。

    1 回复  |  直到 15 年前
        1
  •  3
  •   genpfault    15 年前

    SDL_曲面上的锁定/解锁用于处理将位图放置在系统内存以外的其他位置的后端。锁定曲面会将位图拉回到系统内存中进行修改,而unlock则会将其推出。

    它们不是多线程的。

    可以 能够通过锁定/解锁主线程中的曲面并将位图指针传递给工作线程来实现。