我正在寻找一种在c#上用C/C++实现与invokeOnMainThread(Android xamarin)/ runOnUiThread(android)/ performSelectorOnMainThread:(objective C)功能等效的方法。
本质上,我需要的是一个函数,它可以从任何线程调用,我将一个处理程序传递给它,该处理程序在主线程上执行。
我相信这将有助于在我想要限制访问特定资源的特定线程的情况下(例如。libmysql DB访问主线程)。
什么是实现这一点的优雅方式?在android中是如何做到的?
发布于 2015-02-11 01:05:05
让您的runOnMainThread
函数将处理程序放在thread-safe queue中,以便稍后由主线程执行,这很简单。您的主线程需要准备好定期执行它在该队列中找到的处理程序。这意味着主线程需要包括一个循环,该循环定期检查队列中的新处理程序。这种定期检查可以通过使用semaphores或其他线程安全的信号机制来提高效率。
以下是一些关于线程安全队列的SO问题:
https://stackoverflow.com/questions/28434048
复制相似问题