zoukankan      html  css  js  c++  java
  • 线程池示例(摘抄)

    using System.Threading;
    
    namespace System
    {
        public static class CompileCSCAtRuntime
        {
            private delegate string RunOnThreadPool(out int threadId);
    
            private static void Callback(IAsyncResult ar)
            {
                Console.WriteLine("Starting a callback...");
                Console.WriteLine("State passed to a callback: {0}", ar.AsyncState);
                Console.WriteLine("Is Thread pool thread: {0}", Thread.CurrentThread.IsThreadPoolThread);
                Console.WriteLine("Thread pool worker thread id: {0}", Thread.CurrentThread.ManagedThreadId);
            }
    
            private static string Test(out int threadId)
            {
                Console.WriteLine("Starting...");
                Console.WriteLine("Is thread pool thread: {0}", Thread.CurrentThread.IsThreadPoolThread);
                Thread.Sleep(TimeSpan.FromSeconds(2));
                threadId = Thread.CurrentThread.ManagedThreadId;
                return string.Format("Thread pool worker thread id was: {0}", threadId);
            }
    
            static void Main(string[] args)
            {
                int threadId = 0;
    
                RunOnThreadPool poolDelegate = Test;
    
                var t = new Thread(() => Test(out threadId));
                t.Start();
                t.Join();
    
                Console.WriteLine("Thread id: {0}", threadId);
    
                IAsyncResult r = poolDelegate.BeginInvoke(out threadId, Callback, "a delegate asynchronous call");
                r.AsyncWaitHandle.WaitOne();
    
                string result = poolDelegate.EndInvoke(out threadId, r);
    
                Console.WriteLine("Thread pool worker thread id: {0}", threadId);
                Console.WriteLine(result);
    
                Console.WriteLine("main threadid was: {0}", Thread.CurrentThread.ManagedThreadId);
    
                Thread.Sleep(TimeSpan.FromSeconds(2));
            }
    
        }
    }

    示例来源:《C#多线程编程实战》

  • 相关阅读:
    xmlHttpRequest参数
    蒙哥马利:“沙漠之狐”猎手
    c# as is 类型转换
    值类型和引用类型
    BuuctfmiscN种方法解决
    Buuctfmisc二维码
    Buuctfweb[HCTF 2018]WarmUp
    Buuctfmisc大白
    map用索引作下标之后,再插值时报错.
    c++ stl 的string 的size() legth()区别
  • 原文地址:https://www.cnblogs.com/hellowzl/p/8966338.html
Copyright © 2011-2022 走看看