blockingqueue

Mediacodec, decode byte packet from server and render it on surface

房东的猫 提交于 2020-01-21 10:20:30
问题 I have some issues with MediaCode. I have 3 components; Decoder, Downloader and Render. And Simple FragmentStreamVideo that initialize the 'SurfaceView' and the 'Downloader'. The other components like the Render and Decoder are initialized in the SurfaceView. Then, a syncronize is done between the Decoder and the Dowloader, implemented by BlockingQueue<String> queue where String = Filename ( Each frame has its file ). Another syncronize between Decode and Render is done by the standard

C++ pthread blocking queue deadlock (I think)

折月煮酒 提交于 2020-01-20 02:54:08
问题 I am having a problem with pthreads where i think i am getting a deadlock. I have created a blocking queue which I thought was working, but after doing some more testing I have found that if i try and cancel multiple threads that are blocking on the blocking_queue, i seem to get a deadlock. The blocking queue is very simple and looks like this: template <class T> class Blocking_Queue { public: Blocking_Queue() { pthread_mutex_init(&_lock, NULL); pthread_cond_init(&_cond, NULL); } ~Blocking

ThreadPoolExecutor - ArrayBlockingQueue … to wait before it removes an element form the Queue

假装没事ソ 提交于 2020-01-16 03:25:25
问题 I am trying to Tune a thread which does the following: A thread pool with just 1 thread [CorePoolSize =0, maxPoolSize = 1] The Queue used is a ArrayBlockingQueue Quesize = 20 BackGround: The thread tries to read a request and perform an operation on it. HOWEVER, eventually the requests have increased so much that the thread is always busy and consume 1 CPU which makes it a resource hog. What I want to do it , instead sample the requests at intervals and process them . Other requests can be

How to get the ThreadPoolExecutor to increase threads to max before queueing?

别等时光非礼了梦想. 提交于 2020-01-08 11:56:08
问题 I've been frustrated for some time with the default behavior of ThreadPoolExecutor which backs the ExecutorService thread-pools that so many of us use. To quote from the Javadocs: If there are more than corePoolSize but less than maximumPoolSize threads running, a new thread will be created only if the queue is full . What this means is that if you define a thread pool with the following code, it will never start the 2nd thread because the LinkedBlockingQueue is unbounded. ExecutorService

Creating a Blocking Queue

笑着哭i 提交于 2020-01-06 03:22:19
问题 Sometimes this implementation and execution of BlockingQueue just works. Sometimes it segfaults. Any idea why? #include <thread> using std::thread; #include <mutex> using std::mutex; #include <iostream> using std::cout; using std::endl; #include <queue> using std::queue; #include <string> using std::string; using std::to_string; #include <functional> using std::ref; template <typename T> class BlockingQueue { private: mutex mutex_; queue<T> queue_; public: T pop() { this->mutex_.lock(); T

Multiple Producer Multiple Consumer Multithreading Java

佐手、 提交于 2020-01-01 07:06:47
问题 I'm trying out Multiple Producer - Multiple Consumer use case of Producer-Consumer problem. I'm using BlockingQueue for sharing common queue between multiple producers/consumers. Below is my code. Producer import java.util.concurrent.BlockingQueue; public class Producer implements Runnable { private BlockingQueue inputQueue; private static volatile int i = 0; private volatile boolean isRunning = true; public Producer(BlockingQueue q){ this.inputQueue=q; } public synchronized void run() { /

implement-your-own blocking queue in java

若如初见. 提交于 2019-12-31 09:45:11
问题 I know this question has been asked and answered many times before, but I just couldn't figure out a trick on the examples found around internet, like this or that one. Both of these solutions check for emptiness of the blocking queue's array/queue/linkedlist to notifyAll waiting threads in put() method and vice versa in get() methods. A comment in the second link emphasizes this situation and mentions that that's not necessary. So the question is; It also seems a bit odd to me to check

Is there a way to hold a collection of “messages” upto size 1 MB and write the result to JSON/CSV file

a 夏天 提交于 2019-12-31 04:33:25
问题 I have a blocking queue which keep getting messages through some app, now In asp.net app I tried to consume the queue and write the output into CSV/JSON file. Here I want to hold messages up to 1MB which receive from blocking queue and then write it out, now again hold data for 1MB and write again...so on. In below code, I'm using system.reactive buffer and can hold number of observable 's and write to JSON, but Is there any way on size of observable 's? class Program { private static

When should I use SynchronousQueue

风格不统一 提交于 2019-12-29 10:14:07
问题 new SynchronousQueue() new LinkedBlockingQueue(1) What is the difference? When I should use SynchronousQueue against LinkedBlockingQueue with capacity 1? 回答1: the SynchronousQueue is more of a handoff, whereas the LinkedBlockingQueue just allows a single element. The difference being that the put() call to a SynchronousQueue will not return until there is a corresponding take() call, but with a LinkedBlockingQueue of size 1, the put() call (to an empty queue) will return immediately. I can't

Pass BlockingQueue in JobDataMap of Quartz

送分小仙女□ 提交于 2019-12-24 10:56:49
问题 is there a way to pass a BlockingQueue to a job in the Quartz framework? I tried to use the JobDataMap for passing the BlockingQueue but that doesn't seem to work. Here the relevant code fragment: JobDetail job = newJob(Jobby.class) .withIdentity("myJob", "group1") .usingJobData("buffer", queue) .build(); Perhaps someone has an idea on how to achieve this. 回答1: Looks like you are trying to implement producer/consumer design pattern where producers are placing work in a queue and consumer