我正在寻找一种在Linux上用C / C ++实现invokeOnMainThread(c#xamarin)/ runOnUiThread(android)/ performSelectorOnMainThread :(目标C)的功能等价物的方法。
基本上我需要的是一个函数,它可以从任何线程调用,我传递一个处理程序,它在主线程上执行。
我相信这对于我想限制对特定线程的特定资源的访问(例如,libmysql DB访问主线程)的情况会有所帮助。
实现这一目标的优雅方式是什么? 它是如何在android中完成的?
答案 0 :(得分:1)
将runOnMainThread
函数位置处理程序放在thread-safe queue中以供主线程稍后执行是很简单的。您的主线程需要准备好定期执行它在该队列中找到的处理程序。这意味着主线程需要包含一个循环,该循环定期检查队列中的新处理程序。通过使用semaphores或其他线程安全信令机制,可以有效地进行定期检查。
以下是关于线程安全队列的一些SO问题: