Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
#include <errno.h>
#define __USE_GNU
#include <sched.h>
#undef __USE_GNU
int
main (void)
{
cpu_set_t set;
CPU_ZERO(&set);
CPU_SET(0, &set);
if (sched_setaffinity(0, sizeof(cpu_set_t), &set) < 0)
perror("Error in sched_setaffinity()");
return 0;
}
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
volatile int x = 0, y = 0;/* 'volatile' is important! */
pthread_mutex_t x_mutex, y_mutex;
#define ITERATIONS 5000000
/* good value for Athlon 900, eventually adjust for faster/slower processors */
void *thread_routine_0 (void *data)
{
int n;
for (n = 0; n < ITERATIONS; n++) {
pthread_mutex_lock (&x_mutex);
pthread_mutex_lock (&y_mutex);
x++;
y += 2;
pthread_mutex_unlock (&x_mutex);
pthread_mutex_unlock (&y_mutex);
}
return NULL; /* we do not want to return any data */
}
void *thread_routine_1 (void *data)
{
int n;
for (n = 0; n < ITERATIONS; n++) {
pthread_mutex_lock (&x_mutex);
pthread_mutex_lock (&y_mutex);
x++;
y += 2;
pthread_mutex_unlock (&x_mutex);
pthread_mutex_unlock (&y_mutex);
}
return NULL; /* we do not want to return any data */
}
int main () {
pthread_t threads[2];
int n;
/* Init mutexes... */
pthread_mutex_init (&x_mutex, NULL); /* 'NULL' = options (defaults are ok) */
pthread_mutex_init (&y_mutex, NULL); /* 'NULL' = options (defaults are ok) */
/* Create threads */
if (pthread_create (&threads[0], NULL, thread_routine_0, NULL) != 0)
{
puts ("Error creating thread #0!");
exit (3);
}
if (pthread_create (&threads[1], NULL, thread_routine_1, NULL) != 0)
{
puts ("Error creating thread #1!");
exit (3);
}
/* Join the threads (wait until they finished) */
for (n = 0; n < 2; n++)
pthread_join (threads[n], NULL);
/* Cleanup mutexes... */
pthread_mutex_destroy (&x_mutex);
pthread_mutex_destroy (&y_mutex);
/* Print the final values of x and y */
printf ("x = %i, y = %i\n", x, y);
return 0;
}
wichtig ist das du sched.h so inkludierst:Ging nicht....
cpu_1.c:51: undefined reference to `CPU_ZERO'
cpu_1.c:52: undefined reference to `CPU_SET'
Ich bin jetzt aber andersweitig noch fündig geworden.
http://www.die.net/doc/linux/man/man1/taskset.1.html
#define __USE_GNU
#include <sched.h>
#undef __USE_GNU
Damit geht es, nur habe ich da ein "komisches" Ergebnis festgestellt.
Das Programm lauft auf 2 Kernen doppelt so langsam
Liegt das an der Synchronisation und Overhead, oder wie ist sich das zu erklären?
Wie könnt ich denn den Code optimieren, dass er auf 2 Kernen schneller läuft?
Wie funktioniert Multi-Core Programmierung?