Skip to content

Instantly share code, notes, and snippets.

#include <iostream>
#include <queue>
#include <vector>
#include <algorithm>
using namespace std;
class Dish {
public:
virtual string name() =0;
#include <iostream>
#include <thread>
#include <mutex>
#include <chrono>
std::mutex a_lock;
std::mutex b_lock;
void philosophe()
{
#include <condition_variable>
#include <mutex>
#include <thread>
#include <iostream>
#include <queue>
#include <chrono>
using namespace std;
class Queue {
@Geal
Geal / gist:31e7e11bba655d3c662e738043422d72
Last active September 22, 2022 13:36
bounded_producer.cpp
#include <condition_variable>
#include <mutex>
#include <thread>
#include <iostream>
#include <queue>
#include <chrono>
using namespace std;
class Queue {
#include <condition_variable>
#include <mutex>
#include <thread>
#include <iostream>
#include <queue>
#include <chrono>
using namespace std;
class Queue {
@Geal
Geal / ClientSocket.cpp
Last active June 21, 2019 21:01
TP multithreading EPSI 4 2018 28/03/2018
#include "ClientSocket.h"
#include "SocketException.h"
ClientSocket::ClientSocket ( std::string host, int port ){
if ( ! Socket::create() ){
throw SocketException ( "Could not create client socket." );
}
if ( ! Socket::connect ( host, port ) ) {
pub struct NomIterator<I,O> {
input: Option<I>,
parser: Box<Fn(I) -> IResult<I,O> + 'static>,
}
impl<I,O> NomIterator<I,O> {
fn new(input: I, parser: Box<Fn(I) -> IResult<I,O> + 'static>) -> NomIterator<I,O> {
NomIterator {
input: Some(input),

fonctionnement de la stack

Les appels entre fonction sont supportés au niveau du processeur par l'utilisation de la pile (ou "stack"), une structure de donnée supportant les instructions "push" et "pop". C'est une structure "LIFO" (last in, first out): le dernier élément placé sur la pile (push) est le premier élément qu'on peut en retirer (pop).

Lorsque le processeur exécute du code, l'un de ses registres (EIP sur les processeurs X86 et X86_64) contient toujours l'adresse de l'instruction courante. Lorsque le code exécuté appelle une fonction, c'est généralement équivalent à appeler une instruction JMP pour "jump" vers une nouvelle adresse:

2018-06-11T10:45:23Z 93702249952884119 15494 MASTER INFO Starting up
2018-06-11T10:45:23Z 93702249954455053 15494 MASTER INFO 0 launching worker
2018-06-11T10:45:23Z 93702249954929654 15494 MASTER INFO 0 worker launched: 15495
2018-06-11T10:45:23Z 93702249956332870 15494 MASTER INFO sent listeners from master: Ok(())
2018-06-11T10:45:23Z 93702249956388348 15494 MASTER INFO created workers: [Worker { id: 0, run_state: Running }]
2018-06-11T10:45:23Z 93702249956441773 15494 MASTER ERROR could not get saved state path: No such file or directory (os error 2)
2018-06-11T10:45:23Z 93702249956598017 15494 MASTER ERROR could not register metrics socket
2018-06-11T10:45:23Z 93702249960080091 15495 WRK-00 INFO worker 0 starting...
2018-06-11T10:45:23Z 93702249975576411 15494 MASTER INFO waiting for configuration client connections
2018-06-11T10:45:25Z 93702252398634451 15495 WRK-00 INFO will try to receive listeners
[applications]
[applications.MyApp]
protocol = "http"
frontends = [
{ address = "0.0.0.0:8080", hostname = "lolcatho.st" },
{ address = "0.0.0.0:8443", hostname = "lolcatho.st", certificate = "./certificate.pem", key = "./key.pem", certificate_chain = "./certificate_chain.pem" }
]
backends = [