首页
社区
课程
招聘
[旧帖] 在汇编语言中,有多线程的说法吗? 0.00雪花
发表于: 2014-6-21 09:56 18524

[旧帖] 在汇编语言中,有多线程的说法吗? 0.00雪花

2014-6-21 09:56
18524
收藏
免费 0
支持
分享
最新回复 (41)
雪    币: 80
活跃值: (109)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
26
汇编可以调用win api。
高级语言的线程操作是通过调用win api完成的
2014-7-2 19:42
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
27
那Java呢     或者说Java在jvm的平台上它才有多线程??
2014-7-2 23:59
0
雪    币: 25
活跃值: (33)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
28
进程和线程这些东西是系统的事,系统会提供API(老师说Linux下叫systemcall),你去调用就好
2014-7-3 01:02
0
雪    币: 6
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
29
在汇编语言中,有多线程的说法. 详见我的帖子<使用汇编语言编写Windows多线程软件>
http://bbs.pediy.com/showthread.php?p=1298061#post1298061
涉及如何在汇编语言中调用Windows API,创建线程,管理线程(挂起,恢复),同步线程,终止线程.
希望能回答你的问题,如有问题可以给我发消息.
如果觉得有用请顶一下我的帖子,谢谢!
2014-7-4 00:11
0
雪    币: 1539
活跃值: (637)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
30
额额,用汇编是可以实现多线程的,只不过是表面上的多线程,因为它都是调用系统api嘛,最后都是要编译成机器码的,结果都一样,至于多cpu物理支持多线程…我不是太懂,不过这个应该叫做并发吧,可我不了解并发跟多线程有什么联系和区别…
2014-7-4 00:43
0
雪    币: 30
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
31
应该说是有多线程的说法的,内核开发人员就可以通过intel提供的线程切换指令进行状态的切换。
2014-7-4 14:10
0
雪    币: 43
活跃值: (388)
能力值: ( LV9,RANK:140 )
在线值:
发帖
回帖
粉丝
32
反汇编一个多线程bin看看~~~~
2014-7-4 14:15
0
雪    币: 7
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
33
每个都看了一下,我来说说吧。
1,汇编是没有多线程的,它做的事情仅仅是实现程序。
2,程序的运行才可以谈到多线程,比如说Windows,比如Linux,如果大家有兴趣的话,可以去看看os是如何写的,os的核心就是进程调度,同一个时间片,只能有一个进程在执行。
3,线程的实现,大家也可以去看看操作系统内部的实现,一个进程可以有多个线程,而同一时间也只会有一个线程来执行。
注意:进程还有进程中的线程都是由操作系统来实现的。
然后再解释一下多cpu的情况。
多cpu是不完整的多进程彻底并发。
比如2个cpu,那么这个时候,可以同时(注意不是人眼的同时)运行两个进程
但是说不完整又是什么原因呢?
很简单,可以参照进程的定义,每个进程都会有独占资源,但是如果系统无法同时给两个进程分配足够的独立资源的时候,那么这个就是伪同时了。
2014-7-4 22:35
0
雪    币: 1258
活跃值: (1434)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
34
操作系统的时间片轮转,你的单线程工作比如只占一个时间片中的20%,那么你写成多线程后,在同一个时间调度内,你的工作占了>20%,相同的时间片,操作系统处理你的工作就多了,那么就看起来快了,当前操作系统全是“串行”计算的,”并行“只是人的感知认识。
2014-7-5 00:17
0
雪    币: 38
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
35
在linux下,多线程通过pthread_create实现。本质上其实是创建了共享内存空间的进程,如果你用汇编调用fork的系统调用,配上合适的参数(好像是VM_CLONE),也可以实现多线程.
2014-7-24 11:36
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
36
多线程主要是在80286以及以上的处理器中的功能,最早的32位多线程是80386,不知道你懂不懂80386汇编,他们的指令形式差不多,区别就在于工作机制和32位.如何你想搞多线程,首先要会386下的汇编,比起8086处理器,,
如:分页机制(虚拟存储器),多线程等..还有很多功能,至于它多线程的工作机制主要是内存查表的方法,将所有程序的地址段地址和偏移地址放入GDT表和IDT表中,再用时钟频率的中断来不断读取这张表到cs:eip寄存器中和将cs:eip内容保存如这样表,就达到了交换代码地址,当然这当中还牵涉到很徐徐多多的概念,比如各个寄存器的保存,代码段的保护,各种控制门,描述符,和cpu内的各种寄存器保存表的地址,这是整整一本书的概念,建议起看扬季文的书叫做8086汇编语言程序设计,上半本书是讲8086,是基础,下半本书是80386是386的工作机制和原理和汇编方法
             不知道你满意吗
2014-7-24 13:10
0
雪    币: 204
活跃值: (80)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
37
每个核心可以一直执行特定的线程是否可以认为  单核CPU就像一个人..同时只能干一件事...多核心CPU就像多个人....每个人就可以单独在该段时间执行不同的事?
2014-7-24 22:20
0
雪    币: 35
活跃值: (12)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
38
汇编是顺序执行的吧?应该没有多线程的可能。不知道说的对不对
2014-7-25 06:50
0
雪    币: 484
活跃值: (1132)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
39
汇编照样开线程 先加载动态链接库 然后再掉API CreatProcess 随便开线程  和语言没有关系
2014-7-25 16:17
0
雪    币: 1777
活跃值: (990)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
40
线程和是否汇编语言无关啊,最近在学WinApi,直接用汇编调Windows的API就能用多线程啊
2014-7-30 23:48
0
雪    币: 0
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
41
这个完全不知道了,来冒泡共同学习吧!
2014-7-31 12:11
0
雪    币: 10
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
42
汇编和C语言都没有多线程这个概念。
多线程是跟操作系统或者固件相关的。
对于C和WINDOWS,所谓的多线程就是用C去调用某个函数,至于多线程的实现是有编译器和操作系统实现的。
嵌入式也一样。
2014-7-31 13:21
0
游客
登录 | 注册 方可回帖
返回
//