com.chaquo.python.PyException。ImportError。该平台缺乏一个可以运行的多进程sem_open。
我正在构建一个在Windows和Python上工作的应用程序.它可以正确构建,并且这个问题看起来应该在Chaquopy的7.0.3中固定.但是它对我不起作用.我包括尝试在Android VM上运行的LogCat.任何帮助将非常感激.如果需要,我可以从logcat中包含更多错误消息或更多输出. // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { ext.kotlin_version = "1.4.21" repositories { google() jcenter() maven { url "https://chaquo.c
0 2024-02-09
编程技术问答社区
Java中的分布式计数信号灯
我正在寻找类似于java.util.concurrent.Semaphore概念的分布式信号量实现(使用postgres/zookeeper),该概念将维护一组将使用acquire()获得并发布的许可证使用release()允许我限制访问某些资源或同步某些执行.唯一的区别是,该信号量应该让我在多个JVM上执行所有这些操作. 有人可以指向我,如果Java中有任何此类实现或用于实现相同的参考算法? 解决方案 对于Zookeeper,您可以使用 apache curator "> apache curator 库提供共享的信号抽象. 在Postgres中,您可能会考虑为此使用咨询锁,并在此基础上实现一种适用的库.
8 2024-01-23
编程技术问答社区
如何使用信号灯实现条件变量?
不久前,我正在考虑如何以彼此的方式实施各种同步基原始人.例如,在pthreads中,您会得到静音和条件变量,从这些变量可以构建信号量. 在Windows API(或至少是Windows API的较旧版本)中,有静音和信号量,但没有条件变量.我认为应该有可能用静音和信号量来构建条件变量,但是对于我的一生,我只是想不出一种方法. 有人知道这样做的良好结构吗? 解决方案 实施X给定信号量的一种方法是在系统中添加服务器流程,使用信号量与该过程进行通信,并使该过程完成实施X的所有艰苦工作.作为一项学术练习,这可能作弊,但确实可以完成工作,并且因客户流程或突然死亡而行为不当. . 其他解决方案 我可能在这里缺少某些内容,但是与论文中描述的方式相比,从信号量和锁定中实现条件的方法似乎更简单. class Condition { sem_t m_sem; int m_waiters; int m_signals; pthread
2 2024-01-23
编程技术问答社区
饿着肚子吃饭的可能性 哲学家们
我需要检查我解决餐饮哲学家问题的算法,如果它保证所有以下所有内容都满足: : 不可能发生僵局. 没有饥饿的可能性. 我正在使用 semaphore "> semaphore chopsticks on chopsticks 以解决问题. 这是我的代码(算法): while(true) { // He is Hungry pickup_chopsticks(i); // He is Eating... drop_chopsticks(i); // He is thinking } // ... void pickup_chopsticks(int i) { if(i % 2 == 0) /* Even number: Left, then right */ { semaphore_wait(chopstick[(i+1) % NUM_PHILOSOPHERS]); sem
0 2024-01-23
编程技术问答社区
javascript的关键部分或信号问题
function myobj(){ var gup=this; this.lastindex=-1; this.criticalSectionInTimer=0; this.updateTimer; this.start = function(l){ if((typeof this.updateTimer)=="number"){ clearInterval ( this.updateTimer ); } this.updateTimer=setInterval(function() {gup.getMessages();} , 30); } this.stop= function(){ if((typeof this.updateTimer)=="number"){ clearInterval ( this.updateTimer ); } }
0 2024-01-21
编程技术问答社区
RuntimeWarning。启用tracemalloc以获得对象分配的回溯,使用asyncio.sleep
试图使用信号量来控制异步请求以控制对我的目标主机的请求,但是我遇到以下错误,我认为这意味着我的asycio.sleep()实际上没有睡觉.我怎样才能解决这个问题?我想为每个针对的URL的请求添加一个延迟. 错误: RuntimeWarning: coroutine 'sleep' was never awaited Coroutine created at (most recent call last) File "sephora_scraper.py", line 71, in loop.run_until_complete(main()) File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/asyncio/base_events.py", line 571, in run_until_complete self.run_forever()
8 2024-01-20
编程技术问答社区
JavaScript或jQuery中的关键部分
我有一个网页,其中某个Ajax事件是异步触发的.这个Ajax部分可以被调用一次或一次.我无法控制此事件触发的次数,也无法控制时间. 另外,AJAX部分应该作为关键部分运行,含义,当它运行时,该代码的其他副本不应运行. 这是一个伪代码: 运行JavaScript或jQuery代码 输入AJAX的关键部分(当某个过程正在等待响应回调时,请不要再次输入此部分,直到完成此过程) ) 运行更多JavaScript或jQuery代码 我的问题是,如何运行上述方式的步骤2?我如何使用JavaScript或jQuery创建/保证相互排除部分. 我理解理论(信号量,锁等),但是我无法使用JavaScript或jQuery实现解决方案. 编辑 如果您建议一个布尔变量进入关键部分,这将行不通,下面的行将解释原因. 关键部分的代码如下(使用布尔变量建议): load_data_from_database = function () { //
6 2024-01-12
编程技术问答社区
Ada中的semaphores
我已获得以下代码并要求实现信号量. with Ada.Text_IO; use Ada.Text_IO; with Id_Dispenser; with Semaphores; use Semaphores; procedure Philos is No_of_Philos : constant Positive := 5; Meditation : constant Duration := 0.0; type Table_Ix is mod No_of_Philos; Forks : array (Table_Ix) of Binary_Semaphore (Initially_Available => True); package Index_Dispenser is new Id_Dispenser (Element => Table_Ix); use Index_Dispenser; task type Philo; task body Philo is
0 2024-01-10
编程技术问答社区
Ada95中的线程和信号灯
如何在ADA95中使用线程?我可以使用什么功能来创建,销毁,停止和启动它们? 我如何使用这种语言的信号量? 解决方案 ADA的线程术语是"任务". ADA没有直接构建在语言中的信号量,但是谷歌搜索" ADA Smaphore"之类的内容应该会出现相当数量的命中. 其他解决方案 并发构建在语言中,因此您具有特定的ADA语法(即线程)和受保护的对象(即比Semaphores/Mutexes/corysitional变量更强大).这使使用ADA的多线程应用程序比C/Java等其他语言容易得多(易于且易于错误). . 不建议在ADA中使用信号量,受保护的对象要强大得多(但是您可以在需要的情况下轻松使用受保护的对象构建信号量). 一些小的语法示例.任务(和受保护的对象)可以是静态的... task My_Task; task body My_Task is begin -- Just print this to stdout and exit thread
2 2024-01-10
编程技术问答社区
.net-如何使用semaphoreslim将一个代码块限制在一次只能有200个线程?
我已经开发了一个.NET Core Web API,并且有一个场景,我有一个大约1000个记录的列表,其中每个记录都将通过并致电第三方API.第三方API有一个限制,同时只能发送200个请求.因此,我使用了信号量并限制了使用此代码块的线程数量,并且效果很好. 当多个用户或多个请求用于此端点时,第三方API会丢弃错误. 我如何限制信号量在所有请求中仅使用200个线程(当多个用户或请求同时加入时)? SemaphoreSlim _concurrencySemaphoreForDescartesCall = new SemaphoreSlim(1,200); List> searchList = new List>(searchCriteriaList.Count); foreach (var criteria in searc
0 2024-01-08
编程技术问答社区
如果在同一实体上工作,.Net核心异步关键部分
如果使用相同的ID 在同一对象上使用,则需要确保通过Web API访问的方法不能同时访问. 我了解SemaphoreSlim的使用,但是对此的简单插入将锁定所有人的关键部分.但是我只需要在同一实体上工作而不在2个不同的 上锁定该部分才能锁定. 这是我的场景,用户开始工作,实体已创建并准备好修改,然后一个或多个用户可以操纵该实体,但是此操作的一部分必须在关键部分中或IT将导致数据不一致,当工作完成后,将从工作状态中删除实体并搬到和存档,并且只能访问ReadOnly 包含该函数的类是在应用程序的启动 的启动中的瞬态 services.AddTransient(f => new WorkerService(connectionString)); public async Task DoStuff(int entityId) { //Not Critical Stuff //Critical Stuff ReadO
0 2024-01-08
编程技术问答社区
在.NET 4中使用 await SemaphoreSlim.WaitAsync。
我的应用程序正在使用.NET 4.我正在使用 nuget软件包 在我的应用程序中,我想在sempahore waitasync呼叫上等待. SemaphoreSlim semphore = new SemaphoreSlim(100); await semphore.WaitAsync(); 但是我正在遵循汇编错误. 'system.threading.semaphoreslim'不包含" waitasync"的定义,并且没有扩展方法'waitasync'接受类型的第一个参数'system.threading.semaphoreslim'(您是否缺少使用指令或使用指令或组装参考?) .NET 4.0中的uisng waitasync是否可以吗? 解决方案 您不能使用.net 4.0中的SemaphoreSlim.WaitAsync,因为此方法已添加到但是,您可以在public class AsyncSemaphore { private readonl
2 2024-01-07
编程技术问答社区
我怎样才能让UI线程在信号上等待,但处理额外的调度器请求?(就像MessageBox.Show所做的那样)。
通常,当UI线程调用MessageBox.Show()之类的内容时,当前代码执行直到用户单击确定后才继续执行,但是该程序将继续运行在UI线程上派遣的其他代码. 在派遣在被派遣的UI线程上的委托.我想在继续执行之前在某些时候停下来. 在我的新错误处理程序中,我使用信号量来确保一次不超过一个错误.我派遣一个消息框来提醒用户,当他们单击"确定"时,我会发布信号量,允许处理下一个错误. 问题在于它的行为并不如预期的那样.如果两个派遣呼叫的呼叫同时发生,则第一个派遣了一个呼叫,请访问MessageBox..Show,第二个呼叫会阻止UI线程.奇怪的是,派遣呼叫MessageBox.Show()永远不会被执行 - 整个应用程序只是悬挂 - 因此,当用户单击"确定"被永久锁定时,应该释放的信号量.这个解决方案缺乏什么? private static ConcurrentDictionary QueuedErrors = new Conc
8 2024-01-07
编程技术问答社区
如何允许在一个服务器上只创建1个命名的Semaphore?
我想在我的应用中创建一个信号量,如果该应用程序的另一个实例正在运行并且已经创建了信号量,则创建将失败(明显的例外).因此,每个服务器只有一个. 我希望只有一个限制在整个系统中,而不仅仅是CLR.但是我不希望它可以跨多个服务器(或VM)固定.即我希望该应用程序能够在2个不同的服务器上运行. 这可能吗?如果是这样,如何? 谢谢-Dave 解决方案 您可以使用 命名的系统静音者在整个操作系统中可见,可用于同步过程的活动. bool b = true; Mutex mutex = new Mutex(true, "MyMutex", out b); if (!b) throw new InvalidOperationException("Another instance is running");
2 2024-01-07
编程技术问答社区
在Windows 7上无法以标准用户身份创建信号灯
我不知道这是设计是否是设计,但是我似乎无法在Windows 7上创建一个新的信号量作为标准用户,也不能在此方面创建电源用户. SemaphoreSecurity semSec = new SemaphoreSecurity(); // have also tried "Power Users", "Everyone", etc. SemaphoreAccessRule rule = new SemaphoreAccessRule("Users", SemaphoreRights.FullControl, AccessControlType.Allow); semSec.AddAccessRule(rule); bool createdNew = false; // throws exception sem = new Semaphore(1, 1, SEMAPHORE_ID, out createdNew, semSec); return true;
2 2024-01-07
编程技术问答社区
.NET紧凑框架中的semaphores
不幸的是,使用.NET紧凑型框架时,系统中没有信号. 我不确定为什么会这样,有人有想法吗? 谷歌搜索后,我发现了一群人提供自己的实现,但没有一个真正效果很好……或根本没有! 所以我来问专家... 有人可以推荐给.net compact的信号级/图书馆/库吗? 框架? 或 我可以模仿行为吗? 我有一个典型的生产者/消费者设置,其中线将对象推入队列(System.Collections). 然后,我希望一个消费者线程从队列上拉出对象并进行工作,但是显然只有在队列上有东西可以使用! 我在C#中工作,但是我将使用任何语言的解决方案/伪 解决方案 您只需将createSemaphore和发行词置钉 - 它们在Coledll的CE上实现.写一个看起来像system.threading.semaphore的漂亮的托管包装器. 其他解决方案 我认为 OpenNofollow
2 2024-01-06
编程技术问答社区
在Linux C#上运行信号
我正在Linux上运行信号量,并且正在生成以下错误: "异常":{" className":" system.platformnotsupportedException"," message":"此平台上不支持此同步元素的命名版本. ," helpurl":null," stackTraceString":"在system.threading.semaphore.createsemaphorecore(int32 IntialCount,int32 int32 MaximumCount,string name,boolean&createNew&createNew)\ in System.threading.threading.semaphore.semaphore.ctor.ctor.ctor(Int32 Int32 Int32 Int32,Int32) maximumCount,string name,boolean&createNew)\ n在system.threading
20 2024-01-06
编程技术问答社区
TPL数据流与普通Semaphore的对比
我需要进行可扩展过程.该过程主要具有I/O操作,其中一些次要CPU操作(主要是必不可少的字符串).该过程查询数据库中的URL列表,然后从这些URL中获取数据,将下载的数据对象进行启用,然后将某些数据持续到CRM Dynamics中,并将其保留到另一个数据库中.之后,我需要更新第一个数据库.要求的一部分是使并行度度可配置. 最初,我认为通过一系列任务来实现它,并使用信号量限制并行性 - 非常简单.然后,我在此处阅读了一些@Stephen Cleary的帖子和答案,建议使用TPL DataFlow,我认为这可能是一个很好的候选人.但是,我想确保通过使用DataFlow出于有价值的原因来"使"代码"复杂".我也有建议使用 foreachAsync扩展方法也很易于使用,但是我不确定它是否不会因为它分配收集的方式而导致内存开销. TPL DataFlow是这种情况的好选择吗?它比信号量或foreachAsync方法更好 - 如果我通过TPL数据流超过每个其他选项(信号量/foreach
6 2024-01-05
编程技术问答社区
信号灯是否会阻止指令的重新排序?
我正在寻找等同于C#中的锁定语句的等效词.有些人建议使用以下方式使用二进制SemaphoreSlim: await semaphore.WaitAsync().ConfigureAwait(false); try { //inner instructions } finally { semaphore.Release(); } 我知道它有一些问题(例如,这不是再入侵),但是我最大的担心是指令重新定序. 在普通的旧锁定语句中,我们可以保证不会在锁定语句(之前或之后)移出锁的内部指令.这个信号量解决方案是否同样存在?据我所知,文档没有提及此问题. 解决方案 SemaphoreSlim,几乎所有其他同步结构都是使用Monitor(或内部构建在a Monitor顶部)的其他类型构建的,这正是lock已实施,为您提供相同的保证. 其他解决方案 SemaphoreSlim保证是隐式的.它被描述为其他解决方案 我不是内存模型的专家,但是现在我认为我们有
2 2024-01-04
编程技术问答社区
被遗弃的指定信号灯未被释放
当一个C#程序包含一个命名的信号量时,当应用程序提早终止时,它似乎不会发布(例如,按CTRL+C或关闭控制台窗口).至少直到该过程的所有实例终止. 在这种情况下,使用命名的Mutex一个被遗弃的mutexexception提出,但没有信号量.当另一个程序实例提早终止时,如何阻止一个程序实例停滞? class Program { // Same with count > 1 private static Semaphore mySemaphore = new Semaphore(1, 1, "SemaphoreTest"); static void Main(string[] args) { try { // Blocks forever if the first process was terminated // before it had the chance
2 2024-01-04
编程技术问答社区