Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在C/C++ linux中实现像invokeOnMainThread()这样的函数?

如何在C/C++ linux中实现像invokeOnMainThread()这样的函数?
EN

Stack Overflow用户
提问于 2015-02-10 14:24:24
回答 1查看 158关注 0票数 1

我正在寻找一种在c#上用C/C++实现与invokeOnMainThread(Android xamarin)/ runOnUiThread(android)/ performSelectorOnMainThread:(objective C)功能等效的方法。

本质上,我需要的是一个函数,它可以从任何线程调用,我将一个处理程序传递给它,该处理程序在主线程上执行。

我相信这将有助于在我想要限制访问特定资源的特定线程的情况下(例如。libmysql DB访问主线程)。

什么是实现这一点的优雅方式?在android中是如何做到的?

EN

回答 1

Stack Overflow用户

发布于 2015-02-11 01:05:05

让您的runOnMainThread函数将处理程序放在thread-safe queue中,以便稍后由主线程执行,这很简单。您的主线程需要准备好定期执行它在该队列中找到的处理程序。这意味着主线程需要包括一个循环,该循环定期检查队列中的新处理程序。这种定期检查可以通过使用semaphores或其他线程安全的信号机制来提高效率。

以下是一些关于线程安全队列的SO问题:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28434048

复制
相关文章
c++中的pow()函数
定义: #include <math.h> double pow( double base, double exp ); The pow() function returns base raised to the expth power. There’s a domain error if base is zero and exp is less than or equal to zero. There’s also a domain error if base is negative and exp is not an integer. There’s a range error if an overflow occurs.
用户7886150
2021/02/04
1.8K0
C++中的exec()函数
exec()函数在C++中是一个进程控制函数,用于创建新进程执行其他程序或命令行指令。exec()函数可以替换当前进程的代码和数据,创建新的进程运行其他程序。exec()函数有多个版本,例如execl、execv、execle、execve等,根据不同的参数类型和个数来使用。
芯动大师
2023/10/14
3640
C++中的exec()函数
c++ access函数_Linux中GCC编译C程序过程
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说c++ access函数_Linux中GCC编译C程序过程,希望能够帮助大家进步!!!
Java架构师必看
2022/09/12
3K0
Linux stat函数_c++ stringbuffer
  根据《UNIX环境高级编程》中对于stat函数的解释,stat函数和stat命令一样,都是返回该文件的详细信息。 函数定义为:
全栈程序员站长
2022/09/24
1.8K0
C++中substr函数的用法
#include<string> #include<iostream> using namespace std; int main() {   string s("12345asdf");   string a = s.substr(0,5); //获得字符串s中从第0位开始的长度为5的字符串   cout << a << endl; } 输出结果为:12345 【更多】 用途:一种构造string的方法 形式:s.substr(pos, n) 解释:返回一个string,包含s中
Twcat_tree
2022/11/29
8350
C++中的仿函数使用
对于上面应用,很明显,可以简单定义一个比较的函数,用来处理字符长度的比较工作。因此,如果想要利用仿函数,一定是需要用到仿函数类的功能,譬如:仿函数类定义的时候,可以传递一个参数,()操作的时候,也可以传递参数,两种参数有作用优先级的时候,可以考虑这种使用方法。下面实现一个简单工厂模式:
全栈程序员站长
2022/07/09
1.3K0
C++中的数学函数汇总
math.h 数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有:
狼啸风云
2020/07/21
1.8K0
C++中resize函数的用法
resize()是分配容器的内存大小,而reserve()只是设置容器容量大小,但并没有真正分配内存。
全栈程序员站长
2022/07/21
7180
C++ 中的函数对象(仿函数)的使用
函数对象,即一个重载了括号操作符“()”的对象。当用该对象调用此操作符时,其表现形式如同普通函数调用一般,因此取名叫函数对象。即重载函数调用操作符的类,其对象通常称为函数对象。函数对象使用重载()时,行为类似函数调用,因此也叫仿函数。
耕耘实录
2022/05/09
2K0
c++中 append()函数用法
string::append官方介绍网址 append()函数:是向string 的后面追加字符或字符串。
全栈程序员站长
2022/09/09
2.1K0
《挑战30天C++入门极限》图例实解:C++中类的继承特性
上图是一个抽象描述的特性继承表   交通工具是一个基类(也称做父类),通常情况下所有交通工具所共同具备的特性是速度与额定载人的数量,但按照生活常规,我们来继续给交通工具来细分类的时候,我们会分别想到有汽车类和飞机类等等,汽车类和飞类同样具备速度和额定载人数量这样的特性,而这些特性是所有交通工具所共有的,那么当建立汽车类和飞机类的时候我们无需再定义基类已经有的数据成员,而只需要描述汽车类和飞机类所特有的特性即可,飞机类和汽车类的特性是由在交通工具类原有特性基础上增加而来的,那么飞机类和汽车类就是交通工具类的派生类(也称做子类)。以此类推,层层递增,这种子类获得父类特性的概念就是继承。   下面我们根据上图的理解,有如下的代码: #include <iostream> using namespace std; class Vehicle { public: void EditSC(float speed,int total); protected: float speed;//速度 int total;//最大载人量 }; void Vehicle::EditSC(float speed,int total) { Vehicle::speed = speed; Vehicle::total = total; } class Car:public Vehicle//Car类继承Vehicle的特性,Car类是Vehicle的派生类 { public: Car() { aird=0; } protected: int aird;//排量 }; class plane:public Vehicle { protected: float wingspan;//翼展 }; void main() { Car a; a.EditSC(150,4); cin.get(); }   派生类的定义可以在类名称后加冒号public空格加基类名称进行定义,如上面代码中的class Car:public Vehicle。   一旦成功定义派生类,那么派生类就可以操作基类的所有数据成员包括是受保护型的,上面代码中的a.EditSC(100,4); 就是例子,甚至我们可以在构造派生类对象的时候初始化他们,但我们是不推荐这么做的,因为类于类之间的操作是通过接口进行勾通的,为了不破坏类的这种封专装特性,即使是父类于子类的操作也应按遵循这个思想,这么做的好处也是显而易见的,当基类有错的时候,只要不涉及接口,那么基类的修改就不会影响到派生类的操作。
landv
2019/07/15
4100
《挑战30天C++入门极限》图例实解:C++中类的继承特性
C++中fflush()函数与rewind()函数
fflush()函数与rewind()函数都可以使得scanf()函数屏蔽之前输入的回车符。这两个函数的参数都可以是stdin变量。
用户7886150
2021/02/12
9860
C++标准库中的数学函数
http://blog.sina.com.cn/s/blog_149e9d2ec0102wxqt.html
用户7886150
2021/02/12
1.1K0
C++ 中的getline()函数用法详解
遇到了要输入一行字符串的操作,我想除了fgets()的方法(fgets()用法链接),getline()也是可以的,但是我对getline的操作不熟悉,便查阅了很多资料,发现都说的很模糊,借这个机会我想彻底理清楚getline的用法;
全栈程序员站长
2022/11/16
5.9K0
干货丨C++中的虚函数
所谓泛型技术,说白了就是试图使用不变的代码来实现可变的算法。比如:模板技术,RTTI技术,虚函数技术,要么是试图做到在编译时决议,要么试图做到运行时决议。
一头小山猪
2020/04/10
6030
C++中std::getline()函数的用法
1) 的行为就像UnformattedInputFunction, 除了input.gcount()不会受到影响.在构造和检查岗哨对象的, 执行以下操作:
Enjoy233
2019/03/05
7.8K0
C语言(C++)中:详解floor函数、ceil函数和round函数
cout << "The floor of 2.2 is " << i << endl;
用户7886150
2021/02/11
4.7K0
Linux系统下C++标准库函数
函数名作用isalnum()测试字符是否为英文字母或数字isalpha()测试字符是否为英文字母isascii()测试字符是否为ASCII码字符isblank()测试字符是否为空白字符 包括空格 \r\n\t 符号iscntrl()测试字符是否为ASCII码的控制字符isdigit()测试是否为阿拉伯数字 16进制会出现错误isgraph()测试字符是否为可打印字符 打印到纸上islower()测试字符是否为小写英文字母isupper()测试字符是否为大写英文字母isprint()测试字符是否为可打印字符 打印到屏幕上isspace()测试字符是否为空格字符ispunct()测试字符是否为标点符号或特殊符号isxdigit()测试字符是否为16进制数字
用户7886150
2021/02/15
1.9K0
C++中类的构造函数和析构函数
构造函数 对象创建的时候执行 student s //空参构造函数 栈内存中 student s("测试")//带参构造函数 栈内存中 或者 student *s=new student//空参构造函
乱码三千
2021/07/29
2K0
C++中类的构造函数和析构函数
c++ findwindow函数_matlab中怎么查找函数的用法
FindWindow 用来根据类名和窗口名来得到窗口句柄的。但是这个函数不能查找子窗口,也不区分大小写。
全栈程序员站长
2022/09/21
1.1K0

相似问题

如何在C#中实现像模板这样的函数

30

如何在C#中实现像int*[]这样的东西?

24

C/C++中的实模算子

27

如何在指针c++中使用继承类的实函数

31

C++如何在linux中警告像messagebox这样的用户

21
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文