首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏逸鹏说道

    分享一个自制的 .net线程池2

    workItem, bool workerThreadCall) { workerThread = null; workItem = null workItem) { workerThread.SetWork(workItem.Execute); workerThread.Complete 每次调用这个方法,都会将 callback 和 state 封装成一个 WorkItem,然后将封装的 WorkItem 对象放入 _workQueue 队列。 bool TryGetWorkerThreadAndWorkItem(out WorkerThread workerThread, out WorkItem workItem, bool workerThreadCall ActivateWorkerThread(WorkerThread workerThread, WorkItem workItem):这个方法体内的实现很简单,就是将 workItem 分配给 workerThread

    62250发布于 2018-04-11
  • 来自专栏cloudskyme

    jbpm5.1介绍(7)

    workItem, WorkItemManager manager) { System.out.println("Executing work item " + workItem); (WorkItem workItem, WorkItemManager manager) The given work item should be executed. > workItems = new ArrayList<WorkItem>(); public void executeWorkItem(WorkItem workItem, abortWorkItem(WorkItem workItem, WorkItemManager manager) { } public WorkItem workItem = workItemHandler.getWorkItem(); assertNotNull(workItem); assertEquals("john", workItem.getParameter

    903110发布于 2018-03-20
  • 来自专栏cloudskyme

    jbpm5.1介绍(10)

    workItem = workItemHandler.getWorkItem(); assertNull(workItem); ksession = restoreSession(ksession System.out.println("Signaling Hello2"); ksession.signalEvent("Hello2", null, processInstance.getId()); workItem = workItemHandler.getWorkItem(); assertNotNull(workItem); ksession = restoreSession(ksession, true workItem = workItemHandler.getWorkItem(); assertNull(workItem); ksession = restoreSession(ksession = workItemHandler.getWorkItem(); assertNotNull(workItem); ksession = restoreSession(ksession, true

    97250发布于 2018-03-20
  • 来自专栏cloudskyme

    jbpm5.1介绍(8)

    2 [name=Email2, state=0, processInstanceId=1, parameters{}] Executing work item WorkItem 3 [name=Email1 , state=0, processInstanceId=2, parameters{}] Executing No x=NoValue Executing work item WorkItem 4 [ , state=0, processInstanceId=2, parameters{}] Executing Timer x=null Executing work item WorkItem 4 [ , state=0, processInstanceId=2, parameters{}] Executing Condition x=null Executing work item WorkItem , state=0, processInstanceId=2, parameters{}] Executing No x=NoValue Executing work item WorkItem 4 [

    87250发布于 2018-03-20
  • 来自专栏Vincent-yuan

    dotnet core系列之Background tasks with hosted services (后台任务)

    ) { if (workItem == null) { throw new ArgumentNullException(nameof(workItem )); } _workItems.Enqueue(workItem); _signal.Release(); } public async ); return workItem; } } 在 QueueHostedService中,队列中的后台任务出队列并且作为BackroundService执行。 cancellationToken.IsCancellationRequested) { var workItem = await TaskQueue.DequeueAsync (cancellationToken); try { await workItem(cancellationToken)

    1.3K20发布于 2019-09-10
  • 来自专栏DotNet NB && CloudNative

    在 ASP.NET Core 中构建自定义后台任务队列,无需 hangfire

    IBackgroundTaskQueue { void QueueBackgroundWorkItem(Func<IServiceProvider, CancellationToken, Task> workItem ) { if (workItem == null) throw new ArgumentNullException(nameof(workItem)); _workItems.Enqueue (workItem); _signal.Release(); // Signal that a new item is available } public async ); return workItem! (cancellationToken); try { await workItem(_serviceProvider,

    1.7K20编辑于 2024-12-05
  • 来自专栏爱明依

    Java 如何获取控制台日志输出的信息? WriterAppender 可以实现? 配置文件如何配置

    log4j.logger.java.sql.PreparedStatement=DEBUG log4j.logger.java.sql.ResultSet=DEBUG #worklog log4j.logger.work=Info.workItem log4j.appender.workItem=org.apache.log4j.DailyRollingFileAppender log4j.appender.workItem.File=${log4j.path }/work.log log4j.additivity.work=false log4j.appender.workItem.layout=org.apache.log4j.PatternLayout log4j.appender.workItem.layout.ConversionPattern= %-d{yyyy-MM-dd HH:mm:ss} [%p]-[%c:%L] %m%n ##log4j.WriterAppender

    4.2K40发布于 2019-03-12
  • 来自专栏学海无涯

    iOS14开发-多线程

    (Thread.current) } } // 先执行 DispatchQueue.global().async(execute: workItem) // 后取消 workItem.cancel () // 查看取消状态 print(workItem.isCancelled) (2)如果任务尚未开始执行,取消后则不会再执行。 (Thread.current) } } // 先取消 workItem.cancel() // 再执行 DispatchQueue.global().async(execute: workItem (Thread.current) } } DispatchQueue.global().async(execute: workItem) // 等待 workItem.wait() // 任务完成后才会执行 (Thread.current) } } DispatchQueue.global().async(execute: workItem) // 任务完成以后回到指定队列执行任务 workItem.notify

    1.8K20发布于 2021-06-08
  • 来自专栏网罗开发

    13 个 GCD 应用场景

    主线程不需要子线程的处理结果 func handle(somethingLong: @escaping () -> (), finshed: @escaping () -> ()) { let workItem = DispatchWorkItem { somethingLong() } globalQueue.async(execute: workItem) workItem.wait in self.handleBlockArr { workItem() } self.handleBlockArr.removeAll() = DispatchWorkItem { code() } queue.async(group: group, execute: workItem) return = DispatchWorkItem(flags: .barrier) { code() } queue.async(group: group, execute: workItem

    68620发布于 2021-09-09
  • 来自专栏智能大石头

    线程池ThreadPool及Task调度机制分析

    . // bool needAnotherThread = true; IThreadPoolWorkItem workItem = null; try { = workQueue.Dequeue(tl, ref missedSteal); if (workItem == null) { (); } workItem = null; // // Notify the VM that we executed this workitem. the ThreadAbortException to anyone // who waits for the task to complete. // workItem

    1.8K00发布于 2018-07-31
  • 来自专栏DotNet NB && CloudNative

    .NET 6.0 中的 await 原理浅析

    , 具体调试步骤我就不放了,直接说结果就是, 线程池线程从任务队列中拿到任务后都执行了 DispatchWorkItem 方法 static void DispatchWorkItem(object workItem , Thread currentThread) { Task task = workItem as Task; if (task ! task.ExecuteFromThreadPool(currentThread); return; } Unsafe.As<IThreadPoolWorkItem>(workItem IAsyncStateMachineBox where TStateMachine : IAsyncStateMachine static void DispatchWorkItem(object workItem , Thread currentThread) { Task task = workItem as Task; if (task !

    39420编辑于 2023-11-21
  • 来自专栏木宛城主

    SharePoint 中时间轴 Timeline的实现

    dailyWorksCollection.moveNext()){ //Load the current daily work item in iterate var workItem dailyWorksCollection.get_current(); //Add work item to container addWorkToContainer(workItem.get_item ('ID'),workItem.get_item('Title'),workItem.get_item('DailyContent'),workItem.get_item("Created"));

    2.9K60发布于 2018-01-11
  • 来自专栏码出名企路

    为什么要学习《精进C++》?

    bool stop_ = false; }; };// namespace Diana 第二步:队列线程池 namespace Diana { using WorkItem for (auto& thd: workers_) thd.join(); } private: SafeQueue<WorkItem auto worker = [this](size_t id) { while (true) { WorkItem workers_.emplace_back(worker, i); } } int schedule_by_id(WorkItem worker.join();// 阻塞,等待每个线程执行结束 } } private: std::vector<Diana::SafeQueue<WorkItem

    1.2K30编辑于 2022-12-04
  • 不应面向对象地针对业务行为建立模型!

    . // 使用ID编号载入一个业务流程实例... workitem=workflowService.getWorkItem(id); if ("Ordered".equals(workitem.getItemValueString 对于我们的Web开发人员来说,上述意味着他们可以询问工作流引擎是否仍允许当前用户(客户)更改业务流程的数据: .... // 通过ID编号载入一个业务流程实例... workitem=workflowService.getWorkItem (id); if (("Ordered".equals(workitem.getItemValueString("$workflowstatus"))) && (workitem.getItemValueBoolean

    1.5K20发布于 2018-05-28
  • 来自专栏Android相关

    Android AAPT1编译流程

    workItem.needsCompiling) { xmlCompilationFlags &= ~XML_COMPILE_ASSIGN_ATTRIBUTE_IDS; , workItem.xmlRoot, workItem.file, &table, xmlCompilationFlags); if (err == NO_ERROR && workItem.file->hasData()) { assets->addResource(workItem.resPath.getPathLeaf (), workItem.resPath, workItem.file, workItem.file->getResourceType()); } else { hasErrors

    1.7K40发布于 2020-11-04
  • 来自专栏FreeBuf

    分析重装系统也无法清除的鬼影病毒

    不会真正写入,但会呈现已被写入的假象 内核向用户态进程注入代码原理 通过KeInitializeApc、KeInsertQueueApc(未文档化函数)插入内核APC回调函数、ExQueueWorkItem插入WorkItem 3)上步插入的内核APC函数异步执行 调用ExFreePool释放APC结构体内存 FsRtlAllocatePool申请0×40字节非分页内核内存(用于后续EVENT对象、WORKITEM对象及其参数 PsGetCurrentThreadProcessId得到进程对象,线程对象,PID(存入上面申请的内存中,作为参数传给ExQueueWorkItem插入的回调函数) 调用KeInitializeEvent,用于同步,等待WorkItem 执行完毕 调用ExQueueWorkItem插入后续流程的回调函数 调用KeWaitForMutexObject等待上面的WorkItem回调函数执行完毕 调用ExFreePool释放上面申请的0×40 调用ZwClose,KeUnstackDetachProcess,ObDereferenceObject释放资源 末尾调用KeSetEvent设置事件,用于同步,通知WorkItem执行完毕 ?

    2.4K60发布于 2018-02-08
  • 来自专栏张善友的专栏

    Temp权限引起的WCF问题

    System.ServiceModel.Activation.HostedHttpRequestAsyncResult.OnBeginRequest(Object state) at System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.WorkItem.Invoke2 () at System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.WorkItem.Invoke() at System.ServiceModel.Channels.IOThreadScheduler.CriticalHelper.ProcessCallbacks

    1K100发布于 2018-01-19
  • 来自专栏大内老A

    从执行上下文角度重新理解.NET(Core)的多线程编程[2]:同步上下文

    { while (true) { if (_workItems.TryDequeue(out var workItem )) { workItem.Callback(workItem.State); }

    1.3K30发布于 2020-11-26
  • 来自专栏stcnb

    SYSLIB0006:不支持 Thread.Abort

    cancellationToken.ThrowIfCancellationRequested(); WorkItem work = DequeueWorkItem();

    1.3K10编辑于 2022-01-05
  • Salesforce DevOps Center 部署 (一)

    user追加permission set 7.切换到devops center 然后点击create project 连接github 创建pipeline 然后add environment 接下来创建workitem

    20500编辑于 2025-06-12
领券