导航:首页 > 源码编译 > 多线程源码怎么样

多线程源码怎么样

发布时间:2023-03-16 04:33:49

Ⅰ 求VB6多线程源码

方法 1 : CreateThread

不用多说,万变不离其宗,这是 Win32 内创建线程的唯一系统方法,以下介绍的多线程创建方式虽然不直

接接触这个 Win32 APi,但系统也是通过他创建的。

方法 2 : TimerSetEvent

这个函数是 Win32 系统的一个高精度计时器函数,通过调用这个函数,系统会创建一个新的线程,让Timer

回调函数中的代码运行在这个新线程中。

方法 3 : SHCreateThread

很多人应该没滑冲罩见过这个函数,这是 shlwapi.dll 的一个导出函数,这个函数看字面也能理解是个创建多线

程的函数,而且。。。 他是基于对象操作的多线程函数,也就是说他能够稳定的运行一些用上面2种方法创

建,但不能稳定运行的代码。至少这个函数在 IDE 的环境下表现的中规中矩! 使用方法可查 API-GUIDE

方法 4 : 想起来了, CreateRemoteThread

创建远程线程,经测试一点也不稳定,根本没法说下去了,还不如直接调用 CreateThread

但,做为一种线程的创建方法,还是希望信闹能够熟悉一下,如果不用VB写代码,要写跨进程线程,这是一个简单易

行的办法,否则只能继续SetWindowHook了,熟悉汇编指令的还可以远程分配内存写硬编码执行

方法 5 : 简单说下 ActiveX 方式的多线程

论坛里面有用这种方法实现的稳定多线程,代码虽好,但我却不会用,在倡导绿色软件的今天,为了一个多线

程,而注册表里面又要多点xx,不好。。而且卸载麻烦。 用 ActiveX 创建线程与其他方式创建的线程最重

要的地方要主义,任何VB函数的调用最好都建立在新线程中新初始化的对象基础上执行,不要跨对象调用,

而 ActiveX 的安全线程本身也正是利用了这点,不知道研究 ActiveX 的老大们有没注意,利用他特性实

现的多线程,是初始化的判尘一个新的线程,而这个线程中初始化的对象则是整个工程。很大的资源浪费,而且有

时候还不好控制,不是你想要的效果。总之一句话,新线程中要自己初始化新的对象而且最好不要用实例继承

方法 6 : 我的想法

记得以前 CSDN 中有人做过一个代码,通过函数地址抓取函数内的机器码,如果能够知道VB何时已将代码进

行了机器码的转换,然后抓取这些代码放到数组中执行,那应该是非常稳定的。这纯属娱乐的想法,虽然能够

实现,但有点过分了,除非是 VB 多线程的狂热者,否则我想不该花太多力气研究这个。

方法 7 : 异步

论坛中很多人问,timer控件的事件中代码是怎么运行的。其实这就是异步,对于单核CPU多线程的执行方式

与异步简直无异。而最重要的是,VB 中用异步实现代码执行是安全的。其实异步从大家开始Win GUI编程

就开始接触了。例如窗体的消息循环中就经常会以异步的方式执行,1个消息正在执行的时候,另外的消息又

被执行了,也许这样说会觉得有些乱,稍侯解释。这个帖子内容要说的内容就完了,下一个帖子里面有个我

忘了什么时候写的代码,以那个代码为例,介绍应用异步。

Ⅱ 如何利用多线程,实现处理图像的同时,实时感应鼠标的移动,求c语言源代码!


你这个问题可是超过200分的啊,
这个往大了说是一个比较复杂的设计方案。

实际上C语言是没有多线程的概念的,但是我们可以通过Task来实现多任务。

简单的说,可以采取以下方案:
定义一个主Task,将其置为常驻Task,用以进行Task调度和Task的启动/终了和交互的管理。
定义一个Task优先级列表,用优先级来作为Task调度和管理的基础。
定义一个共享域,和相应的事件分发/广播/传递的管理机制,由主Task来实现各Task间的事件传递。
定义3个List,实现Active,Ready,Dead的Task的管理和调度。
定义各普通Task,包含Task基本信息:Task的栈指针,Task情报,Task存储空间大埋差键小,Task的优先级,Task的事件列表(定义可以接收/发送的事件,以及可以排队的事件的个数),以及如果需要的话可以定义Task的从属(父子)关系。

另外还有几个注意点:
1. 通过C的临界域(critical section)结合PV操作来实现某些Task的原子性处理要求。弯巧
2. 通过Signal来实现中断和再开
3. 如果需要处理中断和再开的话,一定要注意现场保护
4. 同优先级的Task可以通过时间片轮循的方式进行多任务实现

暂时就想到这么多,有不明白庆春的通过消息进一步交流吧:)

Ⅲ 谁给个易语言的简单的post多线程的源码,越简单越好,我想学下

用模块吧 精易模块 普通填表类

Ⅳ 多线程库的源码在哪,为啥在glibc里面没有

Linux下的glic库的源码链接:
http://ftp.gnu.org/gnu/glibc/,你可以下载最新版本的glibc-2.24.tar.gz这个压缩文件,在Windows系统下直接用WinRAR解压即可,如果在Linux系统下用命令行解压的话,命令如下:tar -xzvf glibc-2.24.tar.gz。

Ⅳ 多线程和单线程有啥区别

1 、任务管理及调度:
RT-Thread - 32/256可选优先级抢占式调度,线兄弊程数不限,相同优先级线程时间片轮转调度;支持动态创建/销毁线程。
uCOS - 256优先级抢占式调度,不允许相同陪纳优先级任务存在
2、 同步/通信机制:
RT-Thread - 支持semaphore, mutex, mailbox, message queue, event。mailbox可存储多条消息,任务等待可按优先级进行排队。
uCOS -semaphore,mutex, mailbox, message queue, event。mailbox只能存放1条消息
3、内存管理:
RT-Thread -固定分区内存管理,小内存系统动态内存管理,大内存系统SLAB内存管理
uCOS - 固定大小内存块管理
4、定时器:
RT-Thread - 挂接到系统OS定时器的硬定时器
uCOS - 只能使用OSTimeDly进行时间间隔处理
5、中断嵌套:
RT-Thread - 允许
uCOS - 允许
6、源码许可证:
RT-Thread - 遵循GPLv2+许可证。羡乱族可用于商业产品(只需要注明使用了RT-Thread)
uCOS - 商业收费

Ⅵ 求个按键精灵多线程的源码

Dimenvi,缺早n
n=0
Randomize
Fori=97To105
线程ID=BeginThread(按键)
Delay100
Next
Do
LoopUntiln>=1000
ExitScript
Sub按键
a=i
Do
KeyPressa,1
n=n+1
神渗伏瞎雀Loop
EndSub

Ⅶ iOS详解多线程(实现篇——pThread)

上一节中,我们探究了OC中重要的实现多线程的方法——NSOperation。本节中,我们了解一下不常用的一种创建多线程的方式——pThread。

相关链接:
NSOpreation链接: iOS详解多线程(实现篇——NSOperation)
GCD链接: iOS详解多线程(实现篇——GCD)
NSThread链接: 详解多线程(实扒派现篇——NSThread)
多线程概念篇链接: 详解多线程(概念篇——进程、线程以及多线程原理)

源码链接: https://github.com/weiman152/Multithreading.git

1.NSThread(OC)
2.GCD(C语言)
3.NSOperation(OC)

5.其他实现多线程方法

pThread并不是OC特有的实现多线程的方肢键法,而是Unix、Linux还有Windows都通用的一种实现多线程的方式。
pThread的全称是POSIX threads,是线程的 POSIX 标准。
pThread是C语言的,在iOS的开发中极少使用。

使用之前,记得先导入头文件

运行结果:

从结果可以看出,开启了新的线程,执行任务。

pthread_create() 创建一个线程
pthread_exit() 终止当前线程
pthread_cancel() 中断另外一个线程的运行
pthread_join() 阻塞当前的线程,直到另外一个线程运行结束
pthread_attr_init() 初始化线程的属性
pthread_attr_setdetachstate() 设置脱离状态的属性(决定这个线程在终历此巧止时是否可以被结合)
pthread_attr_getdetachstate() 获取脱离状态的属性
pthread_attr_destroy() 删除线程的属性
pthread_kill() 向线程发送一个信号

由于pThread我们基本用不到,所以不再做深入研究。

Ⅷ 什么是java多线程编程

一、 什么是多线程:

我们现在所使用操作系统都是多任务操作系统(早期使用的DOS操作系统为单任务操作系统),多任务操作指在同一时刻可以同时做多件事(可以同时执行多个程序)。

Ⅸ 请高手帮忙解释下这多线程的源代码,每句注释下 #include <stdio.h> #include <stdlib.h>

首先这是一个生产者和消费者问题。

生产者procer负责产生数据,然后通过put操作将数据放到缓冲区buf中。

消费者consumer负责显示数据,通过get操作从缓冲区buf中读取数据。

========》

先看主函数main(),

生产者和消费者分别用两个线程来实现。

主函数中的pthread_create()函数就是用来创建这两个线程的。

开始定义了两个变量th_a,th_b用来记录这两个线程的线程号。

线程的程序体分别是procer,consumer。

接下来的pthread_join用来等待两个线程结束。因为如果不等待,main函数的主线程会立即结束,而两个子线程还来不及完全执行。

=======》

下面来分别看procer,consumer这两个线程。

procer循环一百次,每次调用put往buffer中放数据,最后放一个OVER;

consumer循环用get从buffer中读到数据并打印,直到读取的数据位OVER数据时结束。

=======》

我们再分别来看put操作和get操作。

由于put和get都要访问buf,buf就是一个临界资源,为了解决这个临界资源,在使用buf之前,要对它加锁。

pthread_mutex_lock(b->lock)一个为信号量加锁的函数。每个信号量只能加锁一次(我说的可能不准确),如果执行该函数的时候,参数中的信号量已经被加锁,则该函数阻塞,直到信号量被解锁才继续执行。这样就能保证信号量所保护的临界资源能够被互斥的访问。

structprodcons{

intbuffer[BUFFER_SIZE];/*这个就是循环缓冲区*/

pthread_mutex_tlock;/*这个是信号量,用来保证对缓冲区的互斥访问*/

intreadpos,writepos;/*这两个成员分别表示读位置和写位置*/

pthread_cond_tnotempty;/*这是表示缓冲区“非空”的条件信号量*/

pthread_cond_tnotfull;/*这是表示缓冲区“非满”的条件信号量*/

};

buf是一个循环的缓冲区,我们先来看缓冲区为空和满这两种状态时,读、写标记(readpos,writepos)的位置。

缓冲区为空时,readpos和writepos指在同一位置;

换从去为满时,writepos位置的下一个位置就是readpos。

/*put负责把数据放到缓冲区*/

voidput(structprodcons*b,intdata)

{

//首先对互斥信号量进行加锁

pthread_mutex_lock(&b->lock);

/*这里就是判断缓冲区有没有满,用writepos+1与readpos比较,可以参考附图。

*因为是循环缓冲区,所以要模BUFFER_SIZE。

*如果缓冲区满,将在while中等待,直到缓冲区非满,再继续执行。

*/

while((b->writepos+1)%BUFFER_SIZE==b->readpos){

printf("waitfornotfull ");

//如果已经满了,则等待消费者读取了数据后发出“非满”信号。

pthread_cond_wait(&b->notfull,&b->lock);

}

/*当缓冲区非满时,将数据写入缓冲区中writepos对应的位置*/

b->buffer[b->writepos]=data;

//更新writepos到下一个位置

b->writepos++;

//循环利用缓冲区空间,如果超过了最大值,则从头开始。

if(b->writepos>=BUFFER_SIZE)b->writepos=0;

/*向消费者发送信号,告诉消费者缓冲取非空*/

pthread_cond_signal(&b->notempty);

//对互斥信号进行解锁。

pthread_mutex_unlock(&b->lock);

}

/*--------------------------------------------------------*/

/*get负责从缓冲区中读取数据*/

intget(structprodcons*b)

{

intdata;

//对互斥信号量进行加锁

pthread_mutex_lock(&b->lock);

/*判断缓冲区是否为空,为空则等待*/

while(b->writepos==b->readpos){

printf("waitfornotempty ");

pthread_cond_wait(&b->notempty,&b->lock);

}

/*读取readpos位置的数据*/

data=b->buffer[b->readpos];

//更新readpos到下一个位置。

b->readpos++;

//循环利用缓冲区,回拨指针

if(b->readpos>=BUFFER_SIZE)b->readpos=0;

/*发信号给生产者,缓冲区非满,可以放数据了*/

pthread_cond_signal(&b->notfull);

//对互斥信号量进行解锁

pthread_mutex_unlock(&b->lock);

returndata;

}

Ⅹ 易语言,有源码,帮忙弄下,多线程怎么一直处理下去,我只能处理十个线程

很容易,把代码中的10改成你想的执行次数就可以,有问题请追问

阅读全文

与多线程源码怎么样相关的资料

热点内容
pdf打印底色去掉 浏览:443
java快递接口 浏览:385
哪个app可以教新爸爸 浏览:208
如何查看服务器系统版本信息 浏览:524
成都市土地出让金算法 浏览:702
钢筋加密标记 浏览:575
ps中扩展功能在文件夹的什么位置 浏览:903
双极压缩机为什么要先高压 浏览:527
苹果手机服务器填什么 浏览:832
android移动动画效果 浏览:691
电子和服务器是什么意思 浏览:691
phpurl中文乱码问题 浏览:893
程序员那么可爱大结局陆漓产子 浏览:538
java如何从云服务器读取本地文件 浏览:923
压缩空气软管制作方法 浏览:912
天河三号算法 浏览:924
php队列教程 浏览:632
洪水命令 浏览:530
安卓怎么弄成苹果在线 浏览:435
谷歌web服务器地址 浏览:900