Пример #1
0
        /// <summary>
        /// データを指定するコンストラクタ
        /// </summary>
        /// <param name="sequence">時系列データ</param>
        /// <param name="border">ラベル境界情報</param>
        /// <param name="title">このデータの識別名</param>
        public SequenceData(TimeSeriesValues sequence, LabelingBorders border, string title)
        {
            _lockDisposable = new LockDisposable(_rwLock);

            this.Values        = sequence;
            this.Borders       = border;
            this.Title         = title;
            this.Type          = SequenceType.Numeric;
            this.IsDataChanged = false;
        }
        private void testToolStripMenuItem_Click(object sender, EventArgs e)
        {
            System.Threading.ReaderWriterLockSlim rw = new System.Threading.ReaderWriterLockSlim(System.Threading.LockRecursionPolicy.SupportsRecursion);
            LockDisposable l = new LockDisposable(rw);
            int            c = 0;
            const int      r = 1000000;
            StringBuilder  s = new StringBuilder();
            DateTime       p;

            for (int j = 0; j < 3; j++)
            {
                p = DateTime.Now;
                for (int i = 0; i < r; i++)
                {
                    c++;
                }
                s.AppendLine(((DateTime.Now.Ticks - p.Ticks) / 1000).ToString());
                p = DateTime.Now;
                for (int i = 0; i < r; i++)
                {
                    lock (rw) {
                        c++;
                    }
                }
                s.AppendLine(((DateTime.Now.Ticks - p.Ticks) / 1000).ToString());
                p = DateTime.Now;
                for (int i = 0; i < r; i++)
                {
                    rw.EnterReadLock();
                    try {
                        c++;
                    } finally { rw.ExitReadLock(); }
                }
                s.AppendLine(((DateTime.Now.Ticks - p.Ticks) / 1000).ToString());
                p = DateTime.Now;
                for (int i = 0; i < r; i++)
                {
                    using (l.GetReadLock()) {
                        c++;
                    }
                }
                s.AppendLine(((DateTime.Now.Ticks - p.Ticks) / 1000).ToString());
            }
            MessageBox.Show(s.ToString());
        }
Пример #3
0
 /// <summary>
 /// 標準のコンストラクタ
 /// </summary>
 public LabelingBorders()
 {
     _lockDisposable = new LockDisposable(_rwLock);
     _defaultName    = "";
     incrementLabelRef("");
 }
 private TimeSeriesValues()
 {
     _lockDisposable = new LockDisposable(_rwLock);
 }