首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

过程(二)Sub过程的定义和调用

大家好,上节主要介绍了VBA过程的定义和分类,本节主要介绍Sub过程的定义和调用。...那么Sub前面的关键字分别是什么意义呢? Public:可以省略,即默认关键字,表示所有模块的所有其他过程都可以访问整个sub过程。(通常收入输入sub创建的就是这类,可以被调用访问。)...在VBA中经常通过调用定义好的过程来执行程序,Sub过程的调用分两种方式,一种是在VBA中调用Sub过程,另一种是在Excel中以调用宏的方式, 1、使用VBA代码调用sub过程 在程序中调用sub过程又两种方式...如之前的调用dingshi的实例。 2、以宏的方式调用sub过程 比较常用的,就是插入表单控件按钮等,然后在指定宏的窗口中,绑定指定的Sub过程,即可以用于调用。...(以宏方式调用Sub过程无法给过程传递参数,所以通过宏只能调用无参数的Sub过程。) ---- 本节主要介绍Sub过程的定义和调用,重点是Sub过程的关键字和注意点。下一节会介绍过程如何传递参数。

5K20
您找到你想要的搜索结果了吗?
是的
没有找到

Qt高并发

线程指南 一般情况下,要尽可能避免使用多线程,而是用Qt事件循环与QTimer、非阻塞I/O操作、信号以及短持续时间槽相结合的方法来代替。...1)无论何时,都尽可能使用QtConcurrent算法把CPU密集型计算工作分散给多线程,而不是自己编写QThread代码。...4)不要调用QDialog::exec()或者除主线程之外的任何线程创建QWidget或QIODevice的子类。...6)在一个拥有多个return语句的函数中使用QMutexLocker(或者QReadLocker、QWriteLocker),以确保函数任意可能的执行路径均可释放锁。...打个比方说,如果想从次线程中修改一个QLabel的文本,则可以发射一个连接到QLabel::setText()的信号,或者该线程中调用QMetaObject::invokeMethod()。

1.4K20

Java多线程编程-(19)-多线程异步调用之Future模式

Java多线程编程-(18)-等待/通知模式接口Condition接口深入分析 一、线程计数器回顾 在《Java多线程编程-(8)-两种常用的线程计数器CountDownLatch和循环屏障CyclicBarrier...二、什么是异步调用 当我们调用一个函数的时候,如果这个函数的执行过程是很耗时的,我们就必须要等待,但是我们有时候并不急着要这个函数返回的结果。...对于调用者来说,则可以先处理一些其他事情,在真正需要数据的时候再去尝试获得需要的数据(这个真正需要数据的位置也就是上文提到的阻塞点)。这也是Future模式的核心思想:异步调用。...上图显示的是一个串行程序调用的流程,可以看出当有一个程序执行的时候比较耗时的时候,其他程序必须等待该耗时操作的结束,这样的话客户端就必须一直等待,知道返回数据才执行其他的任务处理。 ?...这样在整个调用的过程中就不会出现长时间的等待,充分利用时间,从而提高系统效率。 1、Future主要角色 ? 2、Future的核心结构图如下: ?

3.2K11

多进程到多线程

多进程到多线程 为了说明白为什么引入线程这个概念,我们将线程和进程进行一个对比,这个问题就很清晰明了了。 现在我们先来看一下系统中运行有两个进程的情况。...image.png 好了,现在为止,多线程的概念也说清楚了,简单来说,它就是既要像多进程那样并发执行,又能避免进程的切换代价。...我们最后举一个简单的例子说明一下进程和线程,我们平时上网用的谷歌浏览器就是一个进程,进程内有很多线程,线程A用来服务器接受数据,线程B用来显示文本,线程C用来处理图片,线程D用来显示图片。...这一节,我们讲述了多进程的问题、多进程到多线程的诞生、多线程的概念。而线程又分用户级线程和内核级线程,用户级多线程的实现和内核级线程的实现又有所不同。...下一节,我们将先为大家讲述用户级线程的概念、用户级多线程切换的底层。 欢迎关注我们的微信公众号:IT界的泥石流

40610

分享一个自制的 .net线程池1

为了提高爬取效率,必须使用多线程并行爬取。这时候就需要线程池了。池的概念,我想做开发的都应该知道,目的就是对资源的合理运用。.../// int Threads { get; set; } /// /// 一个以毫秒为单位的值,表示最后一个活动的线程执行完任务后开始计时...Complete:一个 Action 类型的事件。每次执行完任务都会调用该事件,作用就是通知其所在线程池,说明”我“已经执行完”你“分配的任务了。...这个方法是提供给线程池用的,每次给 WorkerThread 分配任务都是通过调用这个方法。 Activate():激活 WorkerThread 执行任务。...执行完任务了以后进入到下一个循环等待,直到接收下一个任务和被再次调用 Activate()…如此循环…. 从而达到了我们循环利用线程的目的 WorkerThread 这个类代码也不是很多,百来行而已。

66560

07 线程学习

QThread)来进行封装,然后再学习该类的API接口 参数 用途 Header: #include qmake: QT += core Inherits: QObject //继承于QObject 官方文档可以看出...在创建线程后,要进行启动线程 操作 class WorkerThread : public QThread { void run() override { //该函数是一个普通成员函数...*workerThread = new WorkerThread(this); workerThread->start();//子线程一定要调用start启动,否则,不会执行 线程的几点注意事项:...默认情况下,void run() 只执行一次,想要执行多次,要手动使用循环语句 子线程一定要调用start启动,否则,不会执行 对于信号和槽,在子线程中,不是必须使用,除非,要使用信号和槽来跟其他线程通信...QT线程 编程中,也提供线程同步机制:QMutex QMutexLocker QReadWriteLock QSemaphore QWaitCondition 同步机制的目的是为了保护数据或者代码段,在多线程

14520

解密Java多线程同步:掌握线程间同步与互斥技巧

当缓冲区已满时,调用wait方法使该线程进入等待状态。当缓冲区有空闲位置时,生产数据并打印出来,然后调用notify方法唤醒可能在等待的其他线程。缓冲区的consume方法用于消费数据。...当缓冲区为空时,调用wait方法使该线程进入等待状态。当缓冲区有数据时,取出第一个数据并从缓冲区中移除,然后打印出来,最后调用notify方法唤醒可能在等待的其他线程。...通过调用线程池的shutdown方法,告诉线程池不再接受新的任务,并且等待已经提交的任务执行完成。  当所有的任务执行完成后,线程池会自动关闭。...在main方法中,创建了一个SharedResource对象,并将其作为参数传递给WorkerThread的构造函数。然后使用一个循环创建了5个WorkerThread对象,并启动这些线程。...WorkerThread类继承自Thread类,并具有一个SharedResource对象作为成员变量。在run方法中,可以编写具体的代码来访问和操作共享资源。

16121

原来 C# 线程创建这么简单

相比其他语言,C# 也是提供了多种方式来实现多线程,本文将介绍 C# 多线程的基本概念和使用方法。什么是多线程?线程是操作系统中的基本调度单位,是程序执行的最小单位。...调用 Thread.Start 方法启动线程。线程执行完毕后,调用 Thread.Join 方法等待线程退出。...// 等待线程结束 newThread.Join(); Console.WriteLine("Main 线程开始"); } static void WorkerThread...线程执行的方法是 WorkerThread,该方法在控制台输出一些文本,然后模拟了一些工作(通过调用 Thread.Sleep 方法使线程休眠 1 秒),最后退出线程。结果如下:2....Task 执行的方法是 WorkerTask,该方法在控制台输出一些文本,然后模拟了一些工作(通过调用 Task.Delay 方法使线程休眠 1 秒),最后退出 Task。

30920

源码透析gRPC调用原理

其中,greet_client和greet_server文件中分别是grpc客户端和服务端的业务调用代码,包含了一个标准的gRPC调用过程。...总的来看,调用的过程基本就是分为三步: 创建connection 创建业务客户端实例 调用RPC接口 { ... // 创建connection conn, err := grpc.Dial(address...func WithBalancer() DialOption func WithInsecure() DialOption func WithCodec() DialOption 根据client的需求,调用方在调用...: grpc server graph.jpg 总结 上面的就是关于gRPC调用逻辑的分析,gRPC中的代码十分复杂,本文只涉及了其调用逻辑的分析,在分析展示源码时,省略的一些错误处理或者数据处理的代码...,而侧重于逻辑调用的过程,从而在使用gRPC的时候可以更好的理解其原理。

18.1K126

多线程下的调用上下文 : CallContext

最近在分析现在团队的项目代码(基于.NET Framework 4.5),经常发现一个CallContext的调用,记得多年前的时候用到了它,但是印象已经不深刻了,于是现在来复习一下。...数据槽不在其他逻辑线程上的调用上下文之间共享。当 CallContext 沿执行代码路径往返传播并且由该路径中的各个对象检查时,可将对象添加到其中。...否 GetData System.Runtime.Remoting.Messaging.CallContext中检索具有指定名称的对象 否 LogicalSetData 将给定的对象存储在逻辑调用上下文...是 LogicalGetData 逻辑调用上下文中检索具有指定名称的对象。 是 FreeNamedDataSlot 清空具有指定名称的数据槽。...可以知道,要在多线程环境下使用,我们需要用到另外两个方法:LogicalSetData 与 LogicalGetData。

89020
领券