private (SubmissionProcessor <TSubmission> submissionProcessor, Thread thread) CreateRemoteWorker(int index, string endpoint, ConcurrentQueue <TSubmission> submissionsForProcessing, object sharedLockObject, IFormatterServiceFactory formatterServiceFactory, ISubmissionsFilteringService submissionsFilteringService) { var worker = new RemoteSubmissionsWorker( endpoint, formatterServiceFactory); var submissionProcessor = new SubmissionProcessor <TSubmission>( name: $"RSP #{index}", dependencyContainer: this.DependencyContainer, submissionsForProcessing: submissionsForProcessing, sharedLockObject: sharedLockObject, submissionsFilteringService: submissionsFilteringService, submissionWorker: worker); var thread = new Thread(submissionProcessor.Start) { Name = $"{nameof(Thread)} #{index}" }; return(submissionProcessor, thread); }
private void SpawnSubmissionProcessorsAndThreads() { var submissionsForProcessing = new ConcurrentQueue <TSubmission>(); var sharedLockObject = new object(); var threadCount = Environment.ProcessorCount * Settings.ThreadsCount; this.Logger.Information( "Spawning {SubmissionThreadCount} threads to process submissions (Processor count: {ProcessorCount}, Thread count from config: {ThreadCountFromConfig} )", threadCount, Environment.ProcessorCount, Settings.ThreadsCount); for (var i = 1; i <= threadCount; i++) { var submissionProcessor = new SubmissionProcessor <TSubmission>( name: $"SP #{i}", dependencyContainer: this.DependencyContainer, submissionsForProcessing: submissionsForProcessing, portNumber: Settings.GanacheCliDefaultPortNumber + i, sharedLockObject: sharedLockObject); var thread = new Thread(submissionProcessor.Start) { Name = $"{nameof(Thread)} #{i}" }; this.submissionProcessors.Add(submissionProcessor); this.threads.Add(thread); } }
private (SubmissionProcessor <TSubmission> submissionProcessor, Thread thread) CreateLocalWorker(int index, ConcurrentQueue <TSubmission> submissionsForProcessing, object sharedLockObject, ISubmissionsFilteringService submissionsFilteringService) { var worker = new LocalSubmissionWorker(Settings.GanacheCliDefaultPortNumber + index); var submissionProcessor = new SubmissionProcessor <TSubmission>( name: $"LSP #{index}", dependencyContainer: this.DependencyContainer, submissionsForProcessing: submissionsForProcessing, sharedLockObject: sharedLockObject, submissionsFilteringService: submissionsFilteringService, submissionWorker: worker); var thread = new Thread(submissionProcessor.Start) { Name = $"{nameof(Thread)} #{index}" }; return(submissionProcessor, thread); }
private void SpawnSubmissionProcessorsAndThreads() { var submissionsForProcessing = new ConcurrentQueue <TSubmission>(); var sharedLockObject = new object(); for (var i = 1; i <= Settings.ThreadsCount; i++) { var submissionProcessor = new SubmissionProcessor <TSubmission>( name: $"SP #{i}", dependencyContainer: this.DependencyContainer, submissionsForProcessing: submissionsForProcessing, portNumber: Settings.GanacheCliDefaultPortNumber + i, sharedLockObject: sharedLockObject); var thread = new Thread(submissionProcessor.Start) { Name = $"{nameof(Thread)} #{i}" }; this.submissionProcessors.Add(submissionProcessor); this.threads.Add(thread); } }