android - 在 GLSurfaceView 的 onTouchEvent 处理程序中使用 queueEvent
问题描述
我有一个关于在 GLSurfaceView 的 onTouchEvent 处理程序中使用 queueEvent 的问题。
相关代码如下所示:
@Override
public boolean onTouchEvent(MotionEvent event) {
float x = event.getX(); //in GUI thread
float y = event.getY(); //in GUI thread
queueEvent(new Runnable() {
@Override
public void run() {
rotationAroundTwoAxes(x, y); //in OpenGL thread
}
});
}
我的问题是,由于变量 x 和 y 是在两个线程中访问的,我需要在它们之间进行同步吗?
解决方案
我认为您不需要对该代码进行同步。
因为 GUI 线程不会读取那些 x 或 y。您的代码只是将具有 x 和 y 值的每个 onTouchEvent 排队运行。
如果 x 或 y 是全局变量,您可能需要将其同步(易失性等)。但是在您的代码中,它们只是本地和处置的。
推荐阅读
- python-3.x - ModuleNotFoundError:没有名为“tensorrt”的模块
- swift - 将 searchBar 添加到 tableHeaderView 会增加底部空白
- html - 用垂直行划分 HTML 表格中的单元格
- java - 递归过程中有哪些不同的返回情况
- powershell - IIS使用Powershell响应缓慢时如何回收appool?
- javascript - 无法将悬停属性应用于 CSS 中的完整类
- php - “字段列表”中的未知列“activation_code”
- json - jq - 将值插入子键
- python - 对 pandas 数据框中的列进行分类
- php - 在PHP中使用这种格式的邮件无回复是正确的