示例#1
0
        /// <summary>
        /// <see cref="ThreadPool"/>을 이용하여, 지정한 callback 함수를 지정한 갯수만큼 수행합니다.
        /// </summary>
        /// <param name="callback"></param>
        /// <param name="count"></param>
        public static void ThreadStressByThreadPool(WaitCallback callback, int count = 4)
        {
            callback.ShouldNotBeNull("callback");

            using (var countdown = new CountdownEvent(count)) {
                for (var i = 0; i < count; i++)
                {
                    ThreadPool.QueueUserWorkItem(state => {
                        callback(state);
                        countdown.Signal();
                    });
                }

                countdown.Wait();
            }
        }
示例#2
0
        /// <summary>
        /// <see cref="ThreadPool"/>을 이용하여, 지정된 callback 함수를 지정된 state 인자값 수만큼 실행합니다.
        /// </summary>
        /// <param name="callback"></param>
        /// <param name="states"></param>
        public static void ThreadStressByThreadPool(WaitCallback callback, IEnumerable <object> states)
        {
            callback.ShouldNotBeNull("callback");
            states.ShouldNotBeNull("states");

            var stateArray = states.ToArray();

            using (var countdown = new CountdownEvent(stateArray.Length)) {
                foreach (var state in stateArray)
                {
                    ThreadPool.QueueUserWorkItem(arg => {
                        callback(arg);
                        countdown.Signal();
                    },
                                                 state);
                }

                countdown.Wait();
            }
        }
示例#3
0
        /// <summary>
        /// <see cref="ThreadPool"/>을 이용하여, 지정된 callback 함수를 지정된 state 인자값 수만큼 실행합니다.
        /// </summary>
        /// <param name="callback"></param>
        /// <param name="states"></param>
        public static void ThreadStressByThreadPool(WaitCallback callback, IEnumerable<object> states) {
            callback.ShouldNotBeNull("callback");
            states.ShouldNotBeNull("states");

            var stateArray = states.ToArray();

            using(var countdown = new CountdownEvent(stateArray.Length)) {
                foreach(var state in stateArray)
                    ThreadPool.QueueUserWorkItem(arg => {
                                                     callback(arg);
                                                     countdown.Signal();
                                                 },
                                                 state);

                countdown.Wait();
            }
        }
示例#4
0
        /// <summary>
        /// <see cref="ThreadPool"/>을 이용하여, 지정한 callback 함수를 지정한 갯수만큼 수행합니다.
        /// </summary>
        /// <param name="callback"></param>
        /// <param name="count"></param>
        public static void ThreadStressByThreadPool(WaitCallback callback, int count = 4) {
            callback.ShouldNotBeNull("callback");

            using(var countdown = new CountdownEvent(count)) {
                for(var i = 0; i < count; i++)
                    ThreadPool.QueueUserWorkItem(state => {
                                                     callback(state);
                                                     countdown.Signal();
                                                 });

                countdown.Wait();
            }
        }