说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

绝对难度,绝对挑战,绝对挑战。关于如何控制线程的个数?先送100分,可以在加

编辑:说三道四文库 发布时间:2018-01-22 12:49
HTML文档下载 WORD文档下载 PDF文档下载
ServerThread=new Thread(new ThreadStart(server.startthread)      ServerThread.Priority=ThreadPriority.Normal;
ServerThread.Start();
我的程序是每当有拥护连接的时候,就启动一个进程,但为了节约服务器资源,如何控制线程启动的最大个数。比如超过100的时候,则通知用户,系统正忙。谢谢,
static int ThreadCount=0;
...
if (ThreadCount<=100)
{
ServerThread=new Thread(new ThreadStart(server.startthread);
ServerThread.Priority=ThreadPriority.Normal;
ServerThread.Start();
ThreadCount++;
}
else
     {...}
if(Proccess.GetCurrentProcess().Threads.Count()<=101){
//.....start
}else{
//.....busy
}


----------------------
你的好多贴应该结一下了吧!
一定一定。但还有一个问题,就是,if(Proccess.GetCurrentProcess().Threads.Count()<=101){
你取的是所有的进程,我只是想是执行特定代码的进程server.startthread
那该怎么办呢,还有,上面的第一个人写的对吗,可以吗谢谢,马上就给分
对了我的前面有一个还想问你就是http://www.csdn.net/Expert/TopicView1.asp?id=717421
上面那个人写的不完全对,用那种方法你需要在线程终止的时候加上ThreadCount--;否则你的程序就不能接受第102个联结了。即使实际只有一个线程运行。
------------------------------
我是一只小小鸟
欢迎交流!尽管问我吧,我会帮你解决的!
尽快结帖哦!我是CSDN的菜鸟,我想获得一颗星!支持我吧!
MSN&Mail: ColinFly@hotmail.com
这个问题,对我来说也头痛。

上面的解决方法还是存在很多其他的问题,见http://www.csdn.net/Expert/TopicView1.asp?id=717534,现在仍然没有解决。
public class server
{   
    private static TcpListener t = new TcpListener(7);
    public  System.Threading.Thread  ServerThread;
    private static bool done=false;
    static int ThreadCount=0;
    public static void Main()
    {  
       try
        {
             t.Start();
             Console.WriteLine("Waiting for a connection...");//我想在这里控制线程的个数,但可能有错误,不知如何
     if(ThreadCount<=0)
              {
        server server1=new server();
        server1.ServerThread=new Thread(new ThreadStart(server1.startthread));
        server1.ServerThread.Priority=ThreadPriority.Normal;
        server1.ServerThread.Start();
        ThreadCount++;
        Console.WriteLine(ThreadCount.ToString());
     }      
     else
      {
                 Console.WriteLine("system is busying");
              }      
           }
       catch(Exception ex)
           { 
             Console.WriteLine("Can't Start Server"+ex.ToString());
             return;
           }
     }
     void startthread()
     {
       while (!done) 
       {
           try
   {
              TcpClient s = t.AcceptTcpClient();       
              NetworkStream stream=s.GetStream();       
           
              byte[] bytes = new byte[2048];
              int bytesRead = stream.Read(bytes, 0, bytes.Length);
              string xmlfile = Encoding.ASCII.GetString(bytes,0,bytesRead); 
              stream.Flush();  
                   
      string name= server.checkxml(xmlfile);
              string returnmessage="hello I have get you message"+name;
              bytes= Encoding.ASCII.GetBytes(returnmessage);
              stream.Write(bytes, 0, bytes.Length);
              stream.Flush();                                   
      stream.Close();
      s.Close();
          }
          catch (Exception e) 
          {   
              Console.WriteLine(e.ToString());
      done=true;               
          } 
       }
     } 
     public static string checkxml(string xmlstream)
     {
try
 {
             XmlDocument xmldoc = new XmlDocument();
             xmldoc.LoadXml(xmlstream);
             XmlNode root = xmldoc.DocumentElement;
             
             string funname=xmldoc.SelectSingleNode(@"REQUEST/FUNCTION").Attributes["name"].Value.ToString();             
             root=root.ChildNodes[0];      
             string progid=root.FirstChild.InnerText.ToString();
             Console.WriteLine(progid+funname);
             return funname;
  }
 catch (Exception e) 
          {   
             Console.WriteLine(e.ToString());
             return "error";
          }         
      }   
}
欢乐淘、求PS大神获腾讯开放平台应用创新大赛年度金奖 2012是响应式设计之年 12月28日:1903年计算机之父冯&#183;诺依曼出生 Android木马病毒:伪装成Google Play图标进行DDoS攻击 IE10 CSS Hack jsp中往数据库中写日期和时间的问题 查询语句的优化 在ORACLE 8i中进入SQLPLUS登陆后出现ORA-12547:TNS:丢失联系错误;进入DBA后连接数据库时根本没响应。 请教。。。。。 如何编程得知某一个dll中有哪些类? 怎样自己定义API函数的啊? 如何将2000下命令行的命令保存下来 下载下来的.dll文件的在添加到自定义工具箱时出现以下提示:“反序列化对象的状态不足。需要详细信息” 怎样在JB中新建一个MIDlet啊? 在初中物理电动机部分.换向器如何达到改变电流方向? 额定功率究竟是怎么回事!额定功率的公式:P=Fv 一道测量额定功率物理题;()在测定小灯泡额定功率的 茶铁怎么样 TEA元素怎么样 茶铁碗? 茶的作文素材有谁知道怎么写关于茶的作文?素材有哪些 第一次鸦片战争发生的时间是: 第一次鸦片战争是什么时候? 俄称叙利亚军事对峙在加剧 系因种族教日本:中国舰队穿过冲绳本岛与宫古岛间墨西哥糖果厂爆炸致1人死40人伤 仍三名驻阿富汗英军官涉嫌私刑处决塔利班日议员质疑安倍 称应给首相出席国会次花百元能当“电影投资人”吃简单的饭 唱纯真的歌图书侵权了赔三五万了事?900元马航往返机票无人问津幼儿园抢租阿舅重生宇智波之四忍传说魔星降世闯天下力破洪荒穿越之拯救世界东京之王安吉仙龙峡漂流旅游安吉竹博园旅游照母山森林公园旅游慧济禅寺旅游西安世园会旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘