当前位置: 技术问答>linux和unix
谁给个进程间共享内存同步的例子,多谢
来源: 互联网 发布时间:2016-02-03
本文导语: rt 另,进程间同步可以用pthread_mutex_lock/pthread_mutex_unlock来处理么,原因是什么 | LinuxThreads有"一对一"模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。 另外,怀疑...
rt
另,进程间同步可以用pthread_mutex_lock/pthread_mutex_unlock来处理么,原因是什么
另,进程间同步可以用pthread_mutex_lock/pthread_mutex_unlock来处理么,原因是什么
|
LinuxThreads有"一对一"模型,一个线程实体对应一个核心轻量级进程,而线程之间的管理在核外函数库中实现。
另外,怀疑楼主说的进程同步应该指的就是线程同步,LinuxThreads中的线程同步很大程度上是建立在信号基础上的,所以用pthread_mutex_lock/pthread_mutex_unlock应该是可以的,大胆尝试....
另外,怀疑楼主说的进程同步应该指的就是线程同步,LinuxThreads中的线程同步很大程度上是建立在信号基础上的,所以用pthread_mutex_lock/pthread_mutex_unlock应该是可以的,大胆尝试....
|
服务器端:
//服务器
#include
#include
#define SEGSIZE 1024
#define READTIME 1
//\\\\\\\\\\\\\\\\\\\
// key_t key:标识信号量的关键字
// semid:信号量的ID
//\\\\\\\\\\\\\\\\\\\/
union semun {
int val;
struct semid_ds *buf;
unsigned short *array;
} arg;
//生成信号量
int sem_creat(key_t key)
{
union semun sem;
int semid;
sem.val =1;
semid = semget(key,1,IPC_CREAT|0666);
if (-1 == semid)
{
printf("create semaphore errorn");
exit(-1);
}
semctl(semid,1,SETVAL,sem);
return semid;
}
//删除信号量
void del_sem(int semid)
{
union semun sem;
sem.val = 0;
semctl(semid,0,IPC_RMID,sem);
}
//
//服务器
#include
#include
#define SEGSIZE 1024
#define READTIME 1
//\\\\\\\\\\\\\\\\\\\
// key_t key:标识信号量的关键字
// semid:信号量的ID
//\\\\\\\\\\\\\\\\\\\/
union semun {
int val;
struct semid_ds *buf;
unsigned short *array;
} arg;
//生成信号量
int sem_creat(key_t key)
{
union semun sem;
int semid;
sem.val =1;
semid = semget(key,1,IPC_CREAT|0666);
if (-1 == semid)
{
printf("create semaphore errorn");
exit(-1);
}
semctl(semid,1,SETVAL,sem);
return semid;
}
//删除信号量
void del_sem(int semid)
{
union semun sem;
sem.val = 0;
semctl(semid,0,IPC_RMID,sem);
}
//