matlab的多线程操作

  • 先导知识
  • 一、结论
  • 二、定时器timer
  • 三、多进程操作

先导知识

  1. 听说过:定时器中断、线程、进程
  2. 知道:matlab的帮助文档使用方式,如:doc memmapfile、help memmapfile
  3. 理解:回调函数,同步回调、异步回调(不知道也没关系,csdn里面很多人都写了这个)

一、结论

截止到2021a版本,matlab不能实现传统意义的多线程,但是可以实现并行计算(doc parallel)、定时器中断,以及利用磁盘映射实现多进程通信(doc memmapfile)

本文标题是有些“文不对题”的,实际上只是便于读者检索到该文章。

二、定时器timer

对于轻量级的任务,比如在命令行打印一个字符串,绘制一张点数不多的图,可以”模拟“多线程(本质上还是定时器中断)

该板块讲一下timer的基本使用,有底子的建议在matlab中或者浏览器中查阅timer的帮助文档:

1、基本用法

t = timer('BusyMode','queue','ExecutionMode', 'fixedspacing',...'Period',1/fps, 'TimerFcn', @call_back)

一般设置这几个就可以了,如果需要设置其他的,请自行查阅帮助文档。

(1)‘BusyMode’: 一般选‘queue’,排队执行,这样的话,不至于丢任务。

Character vector or string scalar that indicates action taken when a timer has to execute TimerFcn before the completion of previous execution of the TimerFcn. When Running='on', BusyMode is read only. This table summarizes the busy modes.

BusyMode Values Behavior if Queue Empty Behavior if Queue Not Empty Notes
'drop' Adds task to queue Drops task Possible skipping of TimerFcn calls
'error' Adds task to queue Completes task; throws error specified by ErrorFcn; stops timer Stops timer after completing task in execution queue
'queue' Adds task to queue Waits for queue to clear, and then enters task in queue Adjusts Period property to manage tasks in execution queue

(2)‘Period’:两次回调之间间隔时间;

(3)‘ExecutionMode’:设置下一次回调从什么时候开始,这四个都可能用到,根据需求来。

singleShot:只执行一次;

fixedRate:从上一次回调进入排队开始,经过一个周期,再进入下一次回调;
fixedDelay:经过一个time lag之后,经过一个周期,再进入下一次回调;
fixedSpacing:上一次回调结束之后,经过一个周期,再进入下一次回调;
(4)‘TimerFcn’, @call_back

设置回调函数,这个有点复杂。timer本质上就是一个定时器中断,它通过将任务(call_back)排队执行,它的”回调方式“是根据’ExecutionMode’的设置来确定的,不是传统意义上的同步回调或者异步回调。

三、多进程操作

所谓多进程操作,就是开多个matlab,通过访问硬盘当中的同一个内存空间,实现多个进程之间的通信,从而做到做进程操作。

用到的关键函数是:memmapfile

这里贴一个我自己做测试时用的demo,看不懂的可以在评论区问,看见了就会回复。

注意:两个进程不能同时访问一块内存空间,否则会报错。
(由于matlab语言在markdown格式下,没有高亮,所以下面的两个代码块是选择的是c语言)
第一个.m文件

% 写入一些数据
myData = (1:10)';
fileID = fopen('records.dat','w');
fwrite(fileID,myData,'double');
fclose(fileID);
% 改变一些数据
while 1
m = memmapfile('records.dat','Format','double','Writable',true) ;
m.Data(1) = m.Data(1)+1;
disp(m.Data);
clear m
pause(1)
end

第二个.m文件

%将内存空间'records.dat'的内容打印出来
while 1
m = memmapfile('records.dat','Format','double','Writable','false') ;
disp(m.Data)
clear m
pause(1)
end

matlab的多线程操作相关推荐

  1. FMDatabaseQueue 数据库多线程操作、事务处理

    SQLite数据库多线程操作: 在上面一节中已经讲过FMDB的用法了,接下来讲讲sqlite在都线程中的用法.如果应用中使用了多线程操作数据库,那么就需要使用FMDatabaseQueue来保证线程安 ...

  2. 一行 Python 实现并行化 -- 日常多线程操作的新思路 - 左手键盘,右手书 - SegmentFault...

    一行 Python 实现并行化 -- 日常多线程操作的新思路 - 左手键盘,右手书 - SegmentFault

  3. Shell多线程操作及线程数控制实例

    来源:http://www.jb51.net/article/51720.htm 这篇文章主要介绍了Shell多线程操作及线程数控制实例,文中从单线程实现一个需求开始,不断加入代码实现多线程以及线程数 ...

  4. python多线程读取数据库数据_python多线程操作MySQL数据库pymysql

    python多线程操作MySQL数据库pymysql 项目中使用多线程操作数据库提示错误:pymysql.err.InterfaceError: (0, "),原因是pymysql的exec ...

  5. MFC不能多线程操作控件的原因

    对于大多数mfc对象,请不要在线程间传递它们,不管是栈上的还是堆上的!原因如下:   mfc的大多数类不是线程安全的,调用传入对象的成员函数可能不会报错,但是未必能达到程序预定的功能!   mfc与界 ...

  6. matlab文件目录表示,Matlab - 文件目录路径操作_读取不同路径下的相同文件名表格...

    Matlab - 文件目录路径操作_读取不同路径下的相同文件名表格 tr1   str1   for   max   imp   mda   eva   目录   xls clear;clc; clo ...

  7. python多线程读取数据库数据_Python基于多线程操作数据库相关知识点详解

    Python基于多线程操作数据库相关问题分析 本文实例分析了Python多线程操作数据库相关问题.分享给大家供大家参考,具体如下: python多线程并发操作数据库,会存在链接数据库超时.数据库连接丢 ...

  8. Core Data 多线程操作实战篇

    最近在解决百度音乐iPhone客户端偶现数据库操作crash的问题,顺手整理了下CoreData的多线程原则,以及实际开发时应该如何遵守这些原则. Core Data多线程操作的基本原则 不允许跨线程 ...

  9. c#多线程操作界面控件的简单实现

    一个小功能,早有人实现了.自己在一个项目中用到,觉得有必要记录一下,写下来. 代码 从上面你可能已经看出如何多线程操作同一个控件的,就是通过一个委托,然后定义委托方法,判断控件的InvokeRequi ...

最新文章

  1. 计算机改名后无法上网,CDEF磁盘分区无法修改名字修复方法
  2. Python - MySQL数据库操作
  3. 码云Webhook触发Jenkins自动构建 - Jenkins演练(一)
  4. docker 安装部署 Jenkins 2.322
  5. python知识点总结_20211231
  6. 3.剑指Offer --- 高质量的代码
  7. ❤️Docker教程小白实操入门 教程合集❤️
  8. LayaAir 项目开发使用TiledMap注意
  9. 17.CRT的绿色版安装和使用。
  10. 萤石云 android,Android-再次解读萤石云视频
  11. AtCoder Beginner Contest 062(CD)
  12. (翻译)关系型数据库工作原理(二)
  13. 编程入门先学python好不好,学python用什么软件编程
  14. 坑爹!攻城狮老爸被苹果解雇 只因女儿晒iPhone X
  15. 我一个高考英语94的渣渣是怎么通过四六级的(学习方法技巧)
  16. eap wifi 证书_如何以编程方式在Android中安装CA证书(用于EAP WiFi配置)?
  17. win11无法连接wifi怎么办?
  18. 远程linux云主机,Linux实验室 远程连接Linux云主机方法
  19. Matlab如何画对比柱状图
  20. C语言中的自定义函数

热门文章

  1. Ubuntu16.04 和 Win7 双系统启动顺序更改
  2. android 能调用gcc_Android:交叉编译总结
  3. 红队作业 | 信息收集工具汇总
  4. C语言进阶剖析 13 接续符和转义符
  5. 马斯克的脑机接口,一块树莓派就能做出来?
  6. [廖雪峰python教程列表生成器练习]杨辉三角定义如下,把每一行看做一个list,试写一个generator,不断输出下一行的list
  7. 大话西游2服务器维护公告,大话西游2经典版:2019年05月09日停机维护公告
  8. 计算机硬件简笔画,电脑的鼠标彩色简笔画图片教程步骤
  9. 宋宝华: kvmalloc ——倚天剑屠龙刀两大神器合体?
  10. 如何将wps中的表格转为图片,并设置较高的dpi