问题标签 [producer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
558 浏览

java - 无法在java多线程中维护生产者任务的顺序

我正在编写一个多线程应用程序,其中有一个生产者试图将一个元素添加到共享资源中。我想维护生产者在共享资源中生成元素的顺序。

例如,我的共享资源是一个 SynchronizedQueue,P1、P2、P3、P4 将按 p1、p2、p3、p4 的顺序生成一个新元素,在此期间 P5 生产者将其元素添加到队列中,所以 P1, P2、P3、P4 将等待锁定。一旦 P5 释放锁,P1-4 中的任何一个都将获得锁,因此我们松开了元素的顺序。

有没有办法维护等待锁的元素的顺序?据我了解,这是不可能的,但我想检查这是否可以通过编程方式实现。

0 投票
5 回答
10253 浏览

java - 生产者消费者使用线程

我正在编写一个使用多线程概念在 Java 中实现生产者消费者问题的程序。以下是我应该如何做的一些细节:

1) 主线程应该创建一个缓冲区,其容量指定为命令行参数。生产者和消费者线程的数量也被指定为命令行参数。我应该为每个生产者和消费者线程分配一个唯一的编号。如何为生产者和消费者线程分配唯一编号?

2)生产者线程在无限循环中运行。它生成具有以下格式的数据项(字符串):<producer number>_<data item number>. 例如,来自线程号 1 的第一个数据项将是 1_1,来自线程号 3 的第二个数据项将是 3_2。如何以这种格式创建数据项?

3)然后Producer线程将一个条目写入生产者日志文件(<生产者编号>“已生成” <data item>)。在写入日志条目时,它会尝试插入缓冲区。如果插入成功,它会在日志文件中创建一个条目(<producer number> <data item>“插入成功”)。我该如何编写这样的代码?

下面是我写的Java代码。

如何执行上述步骤?

0 投票
1 回答
2002 浏览

java - java多线程中的生产者消费者

我正在尝试在 java 中实现生产者消费者问题。我正在使用循环缓冲区(循环数组)让生产者将项目插入缓冲区。以下是我的代码:

生产者正在成功地将数据项插入缓冲区。但它们并没有被消费者消费。

当我执行程序时,我得到以下输出。

我的问题是如何让消费者从缓冲区消费项目?

0 投票
1 回答
3276 浏览

hornetq - HornetQ 生产者线程卡在 WAITING 状态

我们使用 HornetQ 2.2.5,我们的问题是在客户端(向 Q 发送消息),所有生产者线程都卡在 WAITING 状态。

请注意生产者在一台机器上,而 HornetQ 服务器在另一台机器上。

这是客户端的线程转储:

线程:pool-10-thread-9:优先级:5,demon:false,threadId:521,threadState:WAITING,lockName:java.util.concurrent.Semaphore$NonfairSync@60568a13

sun.misc.Unsafe.park(本机方法)

java.util.concurrent.locks.LockSupport.park(LockSupport.java:156) java.util.concurrent.locks.AbstractQueuedSynchronizer.parkAndCheckInterrupt(AbstractQueuedSynchronizer.java:811) java.util.concurrent.locks.AbstractQueuedSynchronizer.doAcquireSharedInterruptibly(AbstractQueuedSynchronizer. java:969) java.util.concurrent.locks.AbstractQueuedSynchronizer.acquireSharedInterruptibly(AbstractQueuedSynchronizer.java:1281)

java.util.concurrent.Semaphore.acquire(Semaphore.java:441) org.hornetq.core.client.impl.ClientProducerCreditsImpl.acquireCredits(ClientProducerCreditsImpl.java:74) org.hornetq.core.client.impl.ClientProducerImpl.doSend( ClientProducerImpl.java:305) org.hornetq.core.client.impl.ClientProducerImpl.send(ClientProducerImpl.java:142) org.hornetq.jms.client.HornetQMessageProducer.doSend(HornetQMessageProducer.java:451) org.hornetq.jms。 client.HornetQMessageProducer.send(HornetQMessageProducer.java:199)

与 Q 的连接和会话在客户端被缓存和重用。

在服务器端有以下日志:

[hornetq-failure-check-thread] 19:25:30,820 警告 [org.hornetq.core.protocol.core.impl.RemotingConnectionImpl]
检测到连接失败:未从 /10.2.6.11:50697 接收数据。很可能客户端在没有关闭连接的情况下退出或崩溃,或者服务器和客户端之间的网络出现故障。您也可能错误地配置了 connection-ttl 和 client-failure-check-period。请查看用户手册了解更多信息。现在将关闭连接。[代码=3]

所有生产者线程都卡住了有什么原因吗?

0 投票
1 回答
249 浏览

c# - C# separate thread that calls a method on a timer (Timer out of scope)

I have a working version of my program, where the main part of my program runs on the same thread as the GUI using a forms.timer.

I am trying to upgrade to a better version that uses 2 threads. One of my threads (that processes all of the information) needs to be called repeatedly (on a timer).

I am using the following from my main class:

Where bot.refresh is the method I want to call every second (1000ms) until I stop it.

About 1/3rd of the time the timer will run stop and I will get this output:

Any suggestions for why this could be happening?

Also, is there a better way I can do this? I have the feeling that this is an odd way to do it.

Thanks for your help.

EDIT:

Will this go out of scope? This way I can start the timer when I need to rather than when Main is constructed. For it to be referenced does it need to be in the constructor?

Thanks.

0 投票
1 回答
422 浏览

c - 试图将变量传递给子进程

我正在尝试将变量传递给一个分叉的函数,大多数似乎都可以工作,但我需要给每个变量一个我试图传递的 argv[5] 之前未声明的 id。我的代码不断出现段错误,我不知道为什么。有任何想法吗?

主要的

产卵

0 投票
1 回答
9585 浏览

c - 如何使用 execl() 执行另一个程序

我有一个使用多处理器和共享内存的生产者-消费者任务

我有一个问题如何使用 execl() 执行另一个文件

在我的程序中将包含 3 个 c 文件

parent.c : 父进程

producer.c :生产者进程

consumer.c :消费者进程

在我编译文件后 -> 名称 parent,producer,consumer

如果我放目录,我放的所有文件都是:/home/assign

在 parent.c 我有一个代码可以像这样通过 fork 调用生产者和消费者

但是,当我通过 Linux 命令 ./parent 运行程序时

它显示这样的结果

我知道路径或执行命令之间有问题

你能帮忙吗

0 投票
2 回答
365 浏览

concurrency - Go 中的并发生产者和消费者

我想在 Go 中创建一个带有 manager 程序的生产者/消费者。例如:我有一个5 producers, 5 consumers and manager. 生产者有their own local arrays,他们迭代它们并将元素发送给经理。消费者拥有their own local arrays元素消费的信息;他们也将它们发送给经理。管理器有它own array,它存储有哪些元素和有多少元素(例如 - 如果生产者发送1 1 2 3 1 2 0元素,管理器数组看起来像1 3 2 1(一个 0、三个 1、两个 2 和一个 3),它处理生产者和消费者' 请求 - 将一个元素放入数组(生产)或删除它(消费)。

是否可以在 Go 中制作这样的程序?我已经在 J​​AVA + CSP 中使用通道来发送信息,并在管理器中使用守卫来确定当生产者和消费者尝试处理相同的元素时应该首先执行哪个过程(例如,生产者想要将 1 添加到管理器数组同时消费者想要消费 1)。

欢迎提供任何示例或建议,因为我找不到任何关于我想要做什么的信息。如果需要,我可以提供我的 JAVA+CSP 代码。

更新。 同步怎么样(不要从空数组中获取)?例如 - 如果消费者想要使用尚不存在的管理器数组中的元素(例如,消费者想要使用“3”,但管理器没有它们中的任何一个)但生产者有这个元素,它将在几个迭代 - 如何让消费者一次又一次地检查管理器数组,直到生产者工作完成?我是否需要为消费者元素创建结构(或类)并标记它们是否被使用,或者 Go 有特定的方法来做到这一点?

0 投票
1 回答
204 浏览

javascript - 如何正确创建新的Producer?

我正在使用驱动对象模型工具CodeFluentEntities将模型部署到数据库引擎。

我正在考虑使用 localStorage 数据库引擎(如 IndexedDB 或 Web SQL)来为没有服务器的 Web 应用程序存储我的数据。

我查看了文档,但在我看来有点差...我想我理解了注入点等基本原理Produce()Terminate()但是实际生产的目标目录呢?

在我的情况下,这是 Javascript 源代码文件,我怎样才能正确指定(以引用的方式)在哪里生成它们?它必须在一个外部项目中,还是我可以在另一个项目中填写一个目录(例如,我的 webapp 的 .vsproj)?

文档是否可以集成有关这方面的代码示例,或者有人可以将我重定向到适合我需要的文章?

0 投票
1 回答
322 浏览

go - 如何在生产者/消费者场景中获得消费者的响应?

我一直在尝试使用渠道来构建某种生产者/消费者。我有一个requests渠道,许多生产者推送请求,然后我有processRequests处理请求的渠道。

我想知道的是,一旦请求得到满足,将响应发送回生产者(以及正确的,因为不止一个)的最佳方式是什么?基本上如何使它成为一个双向通道?

知道怎么做吗?