/// <summary> /// Do not call this method directly; it is implemented for DDMConnection to call. /// /// </summary> //JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET: //ORIGINAL LINE: public final void newRecord(final DDMCallbackEvent event, final DDMDataBuffer buffer) public void newRecord(DDMCallbackEvent @event, DDMDataBuffer buffer) { buffer.startProcessing(); //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final DDMFile file = event.getFile(); DDMFile file = @event.File; if (file == file_) { DDMDataBuffer nextBuffer = file.NextDataBuffer; // Wait to use the next buffer until our background thread is done with it. while (nextBuffer.Processing) // Uses volatile variable, faster than synchronization, at the cost of a CPU loop here. { file.nextBuffer(); // Advance. nextBuffer = file.NextDataBuffer; // Check the next one. } } }
/// <summary> /// Constructs a multi-threaded reader to process data being read from the specified file /// using the specified record format. </summary> /// <param name="format"> The record format to copy and give to each thread for it to pass to <seealso cref="#process process()"/>. </param> /// <param name="file"> The file being read. </param> /// <param name="numThreads"> The number of threads to use. This number is capped by the number of buffers in the file object, so /// that each thread always has at least one buffer to process, to avoid contention. Having more than one buffer per thread is fine. /// </param> //JAVA TO C# CONVERTER WARNING: 'final' parameters are not available in .NET: //ORIGINAL LINE: public DDMThreadedReader(final DDMRecordFormat format, final DDMFile file, int numThreads) public DDMThreadedReader(DDMRecordFormat format, DDMFile file, int numThreads) { file_ = file; done_ = false; //JAVA TO C# CONVERTER WARNING: The original Java variable was marked 'final': //ORIGINAL LINE: final int numBuffers = file.getBufferCount(); int numBuffers = file.BufferCount; if (numThreads > numBuffers) { numThreads = numBuffers; } runners_ = new DDMReaderRunner[numThreads]; threads_ = new Thread[numThreads]; for (int i = 0; i < numThreads; ++i) { runners_[i] = new DDMReaderRunner(this, format, i, numThreads, numBuffers); threads_[i] = new Thread(runners_[i], "DDMThreadedReader-" + i); threads_[i].Start(); } }