300求一份多线程源码(300分)

  • 主题发起人 主题发起人 yong_yu
  • 开始时间 开始时间
Y

yong_yu

Unregistered / Unconfirmed
GUEST, unregistred user!
要求实现一下功能:
模拟进行N个加法运算(1-100000累加)
一、根据预设的数值N开始N个线程
二、当数值N变化时正在运行的线程动态改变(N减少时执行完以后中止)
三、可指定监控N个线程中的第m个线程状态,并取当前值,并能随时中止线程
 
盒子不是有?那个代理验证的好象就是 不过他的代码我看不懂 只好用自己的土办法实现 验证速度和效果居然比他的好 ^_^ 还是老师说得好 别人的代码1000行 不如自己写的10行
 
冰力不足, 能说下你的办法,或者提供源码吗
 
我的办法太菜 见不得人 我部分写在站内笔记了 只有站长能够看见 不好意思了
 
现在的人怎么都那么谦虚啊,贴出来让我长长见识啊
 
http://www.2ccc.com/article.asp?articleid=3592
盒子的这个应该写得很好 虽然我看不懂
不是谦虚 是我没有做好代码公开的准备 因为我是写全自动Q币积分游戏点查询的 多线程的代码交织在一起
价值几十万元的代码我都能够和人共享 所以我不应该算"谦虚的"
您的问题是问多线程 我以前刚好到盒子看到 就介绍你去看 不能够因为介绍你去看代码还要我公布自己的代码 这样我不是很吃亏 呵呵~~~ 给人指路还要陪一程?
 
非常感谢 冰力不足 ,虽然我水平太菜,看不懂他的代码,但还是非常感谢你的指导。
 
出差几天回来,还是没...............
 
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
CriticalSection: TRTLCriticalSection;
{临界区信息}
implementation
{$R *.DFM}
function ThreadFunc(Info: Pointer): Integer;
stdcall;
var
Count: Integer;
begin
EnterCriticalSection(CriticalSection);
Form1.Button1.Enabled:=False;
for Count := 0 to 10000do
begin
Form1.Edit1.Text := IntToStr(Count);
end;
Form1.Edit1.Text := '线程结束!';
Sleep(500);
Form1.Button1.Enabled:=true;
LeaveCriticalSection(CriticalSection);
ExitThread(4);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
ThreadId1, ThreadId2: DWORD;
begin
Button1.Enabled:=false;
if CriticalSection.RecursionCount<>0 then
DeleteCriticalSection(CriticalSection);
InitializeCriticalSection(CriticalSection);
CreateThread(nil, 0, @ThreadFunc, nil, 0, ThreadId1);
CreateThread(nil, 0, @ThreadFunc, nil, 0, ThreadId2);
end;

end.

这个差不多就能满足你的要求了,自己改一改就行了
 
这个问题也算比较简单的,进程是有开始或结束的,不过是要你对这个两方法处理就是了。
技术交流QQ:136293586
 
bbscom delphi很厉害的,跟他混没有错!!!
[:D]
 
用线程池吧,网上有threadpro,你载一个研究一下
 
各位老大,很抱歉,出差了很长时间,刚回来,
谢谢大家的支持,问题解决!
 
后退
顶部