The intention of the program. Create N threads with 2 shared memories.
One shared memory to write, one shared memory to recieve.
Consumer creates 2 shared memory to share with producer.
I need H threads for the producer as well(somebody help on it..)
Also another question, would segment_id variable interfere with each other in threads?
Code:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/shm.h>
#include <string.h>
#include <pthread.h>
#define N 10
#define H 20
pthread_t house[N];
struct message
{
char text[10];
int source;
int destination;
};
void *hovig(void *param)
{
struct message m1;
int segment_id;
int segment_id1;
int size = 60;
struct message *shared_memory;
struct message1 *shared_memory1;
segment_id = shmget(IPC_PRIVATE,size,S_IRUSR | S_IWUSR);
shared_memory = (struct message *) shmat(segment_id,NULL,0);
segment_id1 = shmget(IPC_PRIVATE,size,S_IRUSR | S_IWUSR);
shared_memory1 = (struct message *) shmat(segment_id1,NULL,0);
return (void*)(size);
}
int main()
{
int value = 4;
int i = 0;
for(i = 0; i < N; i++)
pthread_create(&house[i], NULL,&hovig, &(value));
pthread_join(house[i],NULL);
}
Hi all,
I have an Producer/Consumer program in C(using shared memory and semaphores).It is working fine with sleep calls after every read/write operation.Each one is a independent program.Now if i remove the sleep calls in consumer,it goes on waiting in the loop till the producer puts some valid... (3 Replies)
I would like to loop through a set of directories, performing operation(s) on each one. The basic script** is
dirs=`find . -name .svn -print`
for f in $dirs; do
echo "Processing $f directory .."
done
Fine and dandy, but here is the problem: the find expression must complete... (2 Replies)
Control two exclusively shared resources. The two resources are two files. The producer will write even numbers to one file, and odd numbers to another one. The consumer respectively reads from each file until it gets 5 even numbers and 5 odd numbers.
Can any one help me with the code.
... (0 Replies)
Control two exclusively shared resources. The two resources are two files. The producer will write even numbers to one file, and odd numbers to another one. The consumer respectively reads from each file until it gets 5 even numbers and 5 odd numbers.
Can any one help me with the code.
... (1 Reply)
Control two exclusively shared resources(semaphore). The two resources are two files. The producer will write even numbers to one file, and odd numbers to another one. The consumer respectively reads from each file until it gets 5 even numbers and 5 odd numbers.
Can any one help me with the... (0 Replies)
Control two exclusively shared resources(semaphore). The two resources are two files. The producer will write even numbers to one file, and odd numbers to another one. The consumer respectively reads from each file until it gets 5 even numbers and 5 odd numbers.
Can any one help me with the... (0 Replies)
Control two exclusively shared resources. The two resources are two files. The producer will write even numbers to one file, and odd numbers to another one. The consumer respectively reads from each file until it gets 5 even numbers and 5 odd numbers.
Can any one help me with the code.
... (3 Replies)
Control two exclusively shared resources(semaphore). The two resources are two files. The producer will write even numbers to one file, and odd numbers to another one. The consumer respectively reads from each file until it gets 5 even numbers and 5 odd numbers.
Can any one help me with the... (1 Reply)
normally, i hate asking someone to do my homework for me but am getting desperate right now.
i have a project about consumer producer problem. the deadline is tonight at 23:55. but i havent gotten it working yet. i just COULDNT get it to work right yet.
the problem is as follows: the C - program... (0 Replies)
Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted!
1. The problem statement, all variables and given/known data:
normally, i hate asking someone to do my homework for me but am getting desperate right now.
i have a project... (1 Reply)
Discussion started by: alexantosh
1 Replies
LEARN ABOUT OPENDARWIN
shmget
SHMGET(2) BSD System Calls Manual SHMGET(2)NAME
shmget -- get shared memory area identifier
SYNOPSIS
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
int
shmget(key_t key, int size, int shmflg);
DESCRIPTION
shmget() returns the shared memory identifier associated with the key key.
A shared memory segment is created if either key is equal to IPC_PRIVATE, or key does not have a shared memory segment identifier associated
with it, and the IPC_CREAT bit is set in shmflg.
If a new shared memory segment is created, the data structure associated with it (the shmid_ds structure, see shmctl(2)) is initialized as
follows:
o shm_perm.cuid and shm_perm.uid are set to the effective uid of the calling process.
o shm_perm.gid and shm_perm.cgid are set to the effective gid of the calling process.
o shm_perm.mode is set to the lower 9 bits of shmflg.
o shm_lpid, shm_nattch, shm_atime, and shm_dtime are set to 0
o shm_ctime is set to the current time.
o shm_segsz is set to the value of size.
RETURN VALUES
Upon successful completion a positive shared memory segment identifier is returned. Otherwise, -1 is returned and the global variable errno
is set to indicate the error.
ERRORS
[EACESS] A shared memory segment is already associated with key and the caller has no permission to access it.
[EEXIST] Both IPC_CREAT and IPC_EXCL are set in shmflg, and a shared memory segment is already associated with key.
[ENOSPC] A new shared memory indentifier could not be created because the system limit for the number of shared memory identifiers
has been reached.
[ENOENT] IPC_CREAT was not set in shmflg and no shared memory segment associated with key was found.
[ENOMEM] There is not enough memory left to created a shared memory segment of the requested size.
SEE ALSO shmctl(2), shmat(2), shmdt(2)BSD August 17, 1995 BSD