//[Test]
        public void ConcurrencyTest()
        {
            ConcurrentObject num = new ConcurrentObject();
            int count            = 100000;

            Thread t = new Thread(() =>
            {
                for (int i = 0; i < count; i++)
                {
                    num.Add();
                }
            });
            Thread t2 = new Thread(() =>
            {
                for (int i = 0; i < count; i++)
                {
                    num.Sub();
                }
            });


            t.Start();
            t2.Start();

            t.Join();
            t2.Join();

            Assert.AreEqual(0, num.Num);
        }
예제 #2
0
        private void PerformTest()
        {
            ConcurrentObject c1 = (ConcurrentObject)factory.GetObject("object1");
            ConcurrentObject c2 = (ConcurrentObject)factory.GetObject("object2");

            Assert.AreEqual(date1, c1.Date);
            Assert.AreEqual(date2, c2.Date);
        }
        public async Task SetAsync(string key, ConcurrentObject value)
        {
            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }

            var serializedObject = JsonConvert.SerializeObject(value);
            await _distributedCache.SetAsync(key.ToString(), Encoding.UTF8.GetBytes(serializedObject), new DistributedCacheEntryOptions
            {
                AbsoluteExpiration = DateTime.UtcNow.AddYears(2)
            });
        }
        public async Task SetAsync(string key, ConcurrentObject value)
        {
            if (key == null)
            {
                throw new ArgumentNullException(nameof(key));
            }

            if (value == null)
            {
                throw new ArgumentNullException(nameof(value));
            }

            var serializedObject = JsonConvert.SerializeObject(value);
            await _distributedCache.SetAsync(key.ToString(), Encoding.UTF8.GetBytes(serializedObject), new DistributedCacheEntryOptions
            {
                AbsoluteExpiration = DateTime.UtcNow.AddYears(2)
            });
        }
예제 #5
0
        public void ThreadRing()
        {
            var errors = null as IEnumerable <Diagnostic>;
            var node   = TestRuntime
                         .Concurrent
                         .Build(@"
                concurrent class ring_item
                {
                    int _idx;
                    public ring_item(int idx)
                    {
                        _idx = idx;
                    }
                    
                    public ring_item Next {get; set;}

                    static int ITERATIONS = 50*1000*1000;
                    public void token(int value)
                    {
                        if (value >= ITERATIONS)
                        {
                            console.write(_idx);
                            Node.Stop();
                        }
                        else
                            Next.token(value + 1);
                    }                    
                }", out errors, threads: 1);

            //must not have compilation errors
            Assert.IsNull(errors);

            const int ringCount = 503;

            //create the ring
            var items = new ConcurrentObject[ringCount];

            for (int i = 0; i < ringCount; i++)
            {
                items[i] = node.Spawn("ring_item", i);
            }

            //update connectivity
            for (int i = 0; i < ringCount; i++)
            {
                var curr = items[i];
                var next = i < ringCount - 1 ? items[i + 1] : items[0];
                TestRuntime.Concurrent.Send(curr, "Next", next);
            }

            Stopwatch sw = new Stopwatch();

            sw.Start();
            {
                //run it by sending the first token, it will go around 50M times
                TestRuntime.Concurrent.Send(items[0], "token", 0);
                node.WaitForCompletion();
            }
            sw.Stop();

            TimeSpan rt = TimeSpan.FromTicks(sw.ElapsedTicks);
            var      ts = rt.TotalSeconds.ToString();

            Assert.IsNotNull(ts);
        }
 public void Set(string key, ConcurrentObject value)
 {
     SetAsync(key, value).Wait();
 }
 public Task SetAsync(string key, ConcurrentObject value)
 {
     return Task.Factory.StartNew(() => Set(key, value));
 }
 public void Set(string key, ConcurrentObject value)
 {
     _memoryCache.Set(key, value);
 }
예제 #9
0
        /// <summary>
        /// 根据指定的资源类型创建一个资源对象
        /// </summary>
        /// <param name="objType">资源类型编码</param>
        /// <returns></returns>
        public static ConfigObject CreateObject(int objType)
        {
            ConfigObject configObject;

            switch (objType)
            {
            case S1110Consts.RESOURCE_MACHINE:
                configObject = new MachineObject();
                break;

            case S1110Consts.RESOURCE_LICENSESERVER:
                configObject = new LicenseServiceObject();
                break;

            case S1110Consts.RESOURCE_ALARMSERVER:
                configObject = new AlarmServerObject();
                break;

            case S1110Consts.RESOURCE_VOICESERVER:
                configObject = new VoiceServiceObject();
                break;

            case S1110Consts.RESOURCE_DATATRANSFERSERVER:
            case S1110Consts.RESOURCE_CTIHUBSERVER:
            case S1110Consts.RESOURCE_DBBRIDGE:
            case S1110Consts.RESOURCE_ALARMMONITOR:
            case S1110Consts.RESOURCE_SFTP:
            case S1110Consts.RESOURCE_SCREENSERVER:
            case S1110Consts.RESOURCE_ISASERVER:
            case S1110Consts.RESOURCE_CMSERVER:
            case S1110Consts.RESOURCE_KEYGENERATOR:
            case S1110Consts.RESOURCE_FILEOPERATOR:
            case S1110Consts.RESOURCE_SPEECHANALYSISPARAM:
            case S1110Consts.RESOURCE_RECOVERSERVER:
            case S1110Consts.RESOURCE_CAPTURESERVER:
                configObject = new ServiceObject();
                break;

            case S1110Consts.RESOURCE_STORAGEDEVICE:
                configObject = new StorageDeviceObject();
                break;

            case S1110Consts.RESOURCE_PBXDEVICE:
                configObject = new PBXDeviceObject();
                break;

            case S1110Consts.RESOURCE_CHANNEL:
                configObject = new VoiceChannelObject();
                break;

            case S1110Consts.RESOURCE_SCREENCHANNEL:
                configObject = new ChannelObject();
                break;

            case S1110Consts.RESOURCE_NETWORKCARD:
                configObject = new NetworkCardObject();
                break;

            case S1110Consts.RESOURCE_VOIPPROTOCAL:
                configObject = new VoipProtocalObject();
                break;

            case S1110Consts.RESOURCE_CONCURRENT:
                configObject = new ConcurrentObject();
                break;

            case S1110Consts.RESOURCE_CTICONNECTION:
                configObject = new CTIConnectionObject();
                break;

            case S1110Consts.RESOURCE_CTICONNECTIONGROUP:
                configObject = new CTIConnectionGroupObject();
                break;

            case S1110Consts.RESOURCE_CTICONNECTIONGROUPCOLLECTION:
                configObject = new CTIConnectionGroupCollectionObject();
                break;

            case S1110Consts.RESOURCE_DOWNLOADPARAM:
                configObject = new DownloadParamObject();
                break;

            case S1110Consts.RESOURCE_ALARMMONITORPARAM:
                configObject = new AlarmMonitorParamObject();
                break;

            case S1110Consts.RESOURCE_CTIDBBRIDGE:
                configObject = new CTIDBBServerObject();
                break;

            case S1110Consts.RESOURCE_ALARMSERVICE:
                configObject = new AlarmServiceObject();
                break;

            case S1110Consts.RESOURCE_ALARMPROCESS:
                configObject = new AlarmProcessObject();
                break;

            default:
                configObject = new ConfigObject();
                break;
            }
            configObject.ObjectType = objType;
            return(configObject);
        }
 public void Set(string key, ConcurrentObject value)
 {
     SetAsync(key, value).Wait();
 }
예제 #11
0
 public Task SetAsync(string key, ConcurrentObject value)
 {
     return(Task.Factory.StartNew(() => Set(key, value)));
 }
예제 #12
0
 public void Set(string key, ConcurrentObject value)
 {
     _memoryCache.Set(key, value);
 }