samephore()信号量跨线程通信

samephore1:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

char name[100] = "haihualovefang";

void main()
{
    HANDLE hsem = CreateSemaphoreA(NULL, 0, 1, name);
    printf("创建成功");
    char ch = getch();

    //ReleaseMutex(mutex);//

    ReleaseSemaphore(hsem, 1, NULL);
    printf("触发信号量");
    CloseHandle(hsem);

}

samephore2:

#include <stdio.h>
#include <stdlib.h>
#include <Windows.h>

char name[100] = "haihualovefang";

void main()
{

    HANDLE hsem = OpenSemaphoreA(SEMAPHORE_ALL_ACCESS, TRUE, name);;
    if (hsem == NULL)
    {
        printf("打开失败");
        system("pause");
        return;
    }
    printf("等待-------");
    DWORD res = WaitForSingleObject(hsem, 20000);
    switch (res)
    {
    case WAIT_OBJECT_0:
        printf("收到信号-------");
        break;
    case WAIT_TIMEOUT:
        printf("超时没有收到-------");
        break;
    case WAIT_ABANDONED:
        printf("另外一个进程意外终止-------");
        break;
    default:
        break;

    }
    CloseHandle(hsem);

    system("pause");
}
时间: 2024-12-23 15:43:01

samephore()信号量跨线程通信的相关文章

ZeroMq实现跨线程通信

ZeroMq实现跨线程通信 之前在技术崇拜的技术经理指导下阅读了ZeroMq的基础代码,现在就将阅读的心得与成果记录一下,并重新模仿实现了一下经理的异步队列. 1.对外接口 //主要接口(1)void *ymq_attach (void *ctx_, int oid, void* sink_); (2)void *ymq_detach (void *ctx_, int oid); (3)void *ymq_register_timer (void *ctx_, int oid, int time

Zenject与UniRx结合实现跨线程通信Signal

修改Zenject下ProfileBlock.cs源码, 取消有关UnityEngine.Profiling.Profiler的代码. 然后使用Zenject的Signal: // 定义Signal public class TestCrossThreadCommEvent : Signal<string, TestCrossThreadCommEvent> { } 1 // Install Signals 2 Container.DeclareSignal<TestCrossThrea

【朝花夕拾】一篇文章搞懂Android跨进程通信

前言 只要是面试中高级工程师岗位,Android跨进程通信就是最受面试官青睐的知识点.Android系统的运行由大量相互独立的进程相互协助来完成的,所以Android进程间通信问题,是做好Android开发高级工程师必须要跨过的一道坎.如果您还对这方面的知识还做不到如数家珍,那就和我一起来攻克它吧! 本文主要包含了如下内容: 其行文脉络大致如下,希望能加深读者对这方面内容的记忆:(1)Android基于Linux系统,所以先说系统进程相关知识和Linux IPC.(2)总结Android的IPC

android 远程Service以及AIDL的跨进程通信

在Android中,Service是运行在主线程中的,如果在Service中处理一些耗时的操作,就会导致程序出现ANR. 但如果将本地的Service转换成一个远程的Service,就不会出现这样的问题了. 转换成远程Service非常简单,只需要在注册Service的时候将他的android:process的属性制定成 :remote就可以了. 重新运行项目,你会发现,不会出现ANR了. 为什么将MyService转换成远程Service后就不会导致程序ANR了呢?这是由于,使用了远程Serv

Android中的跨进程通信方法实例及特点分析(一):AIDL Service

转载请注明出处:http://blog.csdn.net/bettarwang/article/details/40947481 最近有一个需求就是往程序中加入大数据的采集点,但是因为我们的Android程序包含两个进程,所以涉及到跨进程通信的问题.现将Android中的跨进程通信方式总结如下. Android中有4种跨进程通信方式,分别是利用AIDL Service.ContentProvider.Broadcast.Activity实现. 1.利用AIDL Service实现跨进程通信 这是

winform跨线程问题

1.invoke是同步线程 1 using System; 2 using System.Collections.Generic; 3 using System.ComponentModel; 4 using System.Data; 5 using System.Drawing; 6 using System.Linq; 7 using System.Text; 8 using System.Threading; 9 using System.Threading.Tasks; 10 using

Linux下c开发 之 线程通信(转)

Linux下c开发 之 线程通信(转) 1.Linux“线程” 进程与线程之间是有区别的,不过Linux内核只提供了轻量进程的支持,未实现线程模型.Linux是一种“多进程单线程”的操作系统.Linux本身只有进程的概念,而其所谓的“线程”本质上在内核里仍然是进程. 大家知道,进程是资源分配的单位,同一进程中的多个线程共享该进程的资源(如作为共享内存的全局变量).Linux中所谓的“线程”只是在被创建时clone了父进程的资源,因此clone出来的进程表现为“线程”,这一点一定要弄清楚.因此,L

Android Messenger 跨进程通信

如果你需要在不同进程间通信,你可以在Service中使用Messenger来实现进程中通信. 如果使用这种方式,Service中需要定义一个Handler对象(负责对客户端发送过来的Message进行响应). Messenger可以共享给client一个IBinder对象,client通过这个IBinder对象向Service发送Message,而前面提到的Handler对象是这一切的基础. 注:使用这种方式进行通信是不支持多线程的. 那就让我们来看看使用这种方式进行通信吧! 注:Service

线程通信(生产者与消费者问题)

1.线程通信的必要性 多线程不仅共享资源,而且相互牵制向前运行. 2.线程通信的方法(都是在Object中定义) 3个方法: 1)    wait() 可运行转入阻塞状态,放锁 2)    notify() 阻塞转入可运行状态,获得锁 3)    notifyAll() 所有调用wait方法而被挂起的线程重新启动,有个条件:wait与notifyAll必须是属于同一个对象 必须在同步方法或同步代码块中使用 3.共享资源类(仓库) 注:共享资源(产品),牵制信息(产品有无)  package co