示例#1
0
        private async Task BeginGroupCommitLoopAsync()
        {
            bool gotLock = false;

            try
            {
                if (!(gotLock = commitLock.TryGetLock()))
                {
                    return;
                }

                while (await this.GroupCommit())
                {
                    // force yield thread
                    await Task.Delay(TimeSpan.FromTicks(1));
                }
            }
            finally
            {
                if (gotLock)
                {
                    commitLock.ReleaseLock();
                }
            }
        }
示例#2
0
        private async Task BeginDependencyCompletionLoopAsync()
        {
            bool gotLock = false;

            try
            {
                if (!(gotLock = dependencyLock.TryGetLock()))
                {
                    return;
                }

                while (this.CheckDependenciesCompleted())
                {
                    // force yield thread
                    await Task.Delay(TimeSpan.FromTicks(1));
                }
            }
            finally
            {
                if (gotLock)
                {
                    dependencyLock.ReleaseLock();
                }
            }
        }
示例#3
0
        private async Task BeginCheckpointLoopAsync()
        {
            bool gotLock = false;

            try
            {
                if (!(gotLock = checkpointLock.TryGetLock()))
                {
                    return;
                }

                while (await this.Checkpoint(resources, transactions))
                {
                }
            }
            finally
            {
                if (gotLock)
                {
                    checkpointLock.ReleaseLock();
                }
            }
        }