图像缩略图

mex multithreading.

版本1.0.0.0(3.11 KB) Dirk-Jan Kroon
MEX文件中的(Windows)多线程示例

8下载

更新2008年9月02日

查看许可证

编辑注意:这个文件被选为MATLAB中心挑选本周

如今,MATLAB是多线程的,但大多数MEX文件仍然是单线线程。这是MEX文件多线程的C代码的一个简单示例。

MEX函数“y = square(x)”用C代码编写,启动2个工作线程。第一个Worker线程将在均匀输入索引上的所有值方形为x [0] x [2] .. x [n],第二个工作线程,所有奇数索引x [1] x [3] .. x [n]。还通过使用互斥锁锁定百分比变量来演示线程安全性。

例子,
Mex Square.c;
Y =正方形([1 2 3 4 5 6 7 8 9])

笔记:
该函数使用Visual Studio和其他一些编译器中包含的(函数睡眠)和(函数_beginthreadex)。

使用Windows Vista 64和Visual Studio 2008编译器以及(默认)LCC编译器和Vista 32测试此示例。

引用

Dirk-Jan Kroon(2021)。mex multithreading.(//www.tatmou.com/matlabcentral/fileexchange/21233-mex-multithinging),Matlab中央文件交换。检索到

意见及评分(7.

丹尼尔·冯·阿斯蒙特

我注意到,每次读取百分比变量并之后释放它,主线程将获取互斥锁。imho这只是浪费时间。只有工人线程受益于它(读取和修改变量时)。

在这种情况下,您可能希望删除互斥锁,并使用InterlockedIncrement()函数来更新百分比。

杰森

您是否考虑使用C ++重做此示例,因为线程支持库被添加到C ++ 11中的标准?金宝app

Shlomi Golubev.

优秀的!非常感谢

广告客户

非常好评。Square.c线144 Col 41中有一个拼写错误 - 应该是双重“%”以实际打印出来。
在WinXP64Bit Pro-Works上进行测试。

jveer.

可以使用MATLAB编译器编译此功能可以编译成独立应用程序吗?

A B.

对mex函数中多线程的精彩介绍。

尼克克拉克

很好的提交。可爱的例子和易于理解。检查Intel TBB是否可扩展性,特别是现在可以免费获得。再次感谢:D

Matlab释放兼容性
用R2008a创建
兼容任何释放
平台兼容性
视窗 苹果系统 Linux.

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!