Use_a_Cabeca_C_.pdf

January 24, 2017 | Author: 1028freitas | Category: N/A
Share Embed Donate


Short Description

Download Use_a_Cabeca_C_.pdf...

Description

Primeiros Elogios ao Use a Cabeça! C “Use a Cabeça! C possivelmente pode acabar sendo o melhor livro de C de todos os tempos. Eu poderia facilmente visualizá-lo se tornando o livro didático padrão para curso de faculdade sobre C. A maioria dos livros sobre programação segue um caminho relativamente previsível. Este livro, por outro lado, utiliza uma abordagem completamente diferente. Ele te ensina a ser um verdadeiro programador em C.” — Dave Kitabjian, diretor de Desenvolvimento de Software, NetCarrier Telecom “ Use a Cabeça! C é uma introdução acessível e animada à programação em C, no clássico estilo da série Use a Cabeça!. Figuras, piadas, exercícios e laboratórios guiam o leitor suavemente, porém de forma constante, pelos fundamentos de C... antes de avançar para tópicos mais avançados de programação em sistemas Posix e Linux.” — Vince Milner, desenvolvedor de software

Elogios a outros livros da série “O livro de Kathy e Bert Use a Cabeça! Java transforma a página impressa em algo semelhante a uma GUI (Interface Gráfica do Utilizador) que você já tenha visto. Com um jeito bem-humorado e moderno, os autores fazem do aprendizado de Java uma experiência envolvente do tipo ‘o que eles farão a seguir?’” — Warren Keuffel, Revista Software Development “Além do estilo interessante que o leva do saber nada para o status de guerreiro Java, Use a Cabeça! Java inclui uma enorme quantidade de assuntos práticos que outros textos deixam como o temido ‘exercício para o leitor...’. É inteligente, bem-humorado, moderno e prático – e não há muitos livros didáticos que podem fazer tal alegação e cumpri-la, enquanto também ensinam serialização de objetos e protocolos de redes.” — Dr. Dan Russell, diretor de Pesquisa de Ciência e Experiência do Usuário, IBM Centro de Pesquisa Almaden; instrutor de inteligência artificial, Universidade de Stanford “É rápido, irreverente, divertido e interessante. Tome cuidado – você poderá realmente aprender alguma coisa!” — Ken Arnold, ex-engenheiro sênior da Sun Microsystems; coautor (com James Gosling, criador da linguagem Java) do The Java Programming Language “Me sinto como se mil quilos de livros fossem retirados de cima da minha cabeça.” — Ward Cunningham, inventor do Wiki e fundador do Hillside Group “Exatamente a coisa certa para o guru informal geek em cada um de nós. A referência certa para estratégias práticas de desenvolvimento estimula meu cérebro, sem ter de me arrastar por um monte de papo cansativo e antiquado de professor.” — Travis Kalanick, fundador de Scour e Red Swoosh; membro do MIT TR100 “Existem livros que você compra, livros que você guarda, livros que você deixa na escrivaninha e, graças a O’Reilly e à equipe Use a Cabeça!, há a penúltima categoria, os livros Use a Cabeça!. São aqueles livros usados, em péssimo estado, que são levados para todo lugar. Use a Cabeça! SQL está no topo da minha pilha. Cara, mesmo o PDF que tenho para revisão está esfarrapado e rasgado.” — Bill Sawyer, gerente de Currículo ATG, Oracle “A admirável clareza, o humor e as doses significativas de inteligência tornam o livro ideal para resolução de problemas, até mesmo para não programadores.” — Cory Doctorow, coeditor de Boing Boing, autor de Down and OUt in the Magic Kingdom e Someone Comes to Town, Someone Leaves Town

Elogios a outros livros da série “Eu recebi o livro ontem e comecei a lê-lo... e não consegui parar. Isso definitivamente é très ‘maneiro’. É divertido, porém transmite muito conteúdo, e vai direto ao assunto. Estou realmente impressionado.” — Erich Gamma, engenheiro distinto da IBM e coautor de Design Patterns “Um dos livros mais engraçados e inteligentes sobre design de software que já li.” — Aaron LaBerge, VP Technology, ESPN.com “O que antes era um processo de aprendizado demorado de tentativa e erro, agora é reduzido nitidamente em um livro cativante.” — Mike Davidson, CEO, Newsvine, Inc. “Design elegante é a essência de cada capítulo aqui, cada conceito transmitido com doses iguais de pragmatismo e humor.” — Ken Goldstein, vice-presidente executivo, Disney Online “Eu ! Use a Cabeça! HTML com CSS e XHTML – ele ensina tudo o que você precisa aprender em um formato revestido de diversão.” — Sally Applin, designer IU e artista “Geralmente quando leio um livro ou artigo sobre padrões de projetos, preciso ocasionalmente optar por medidas drásticas para me certificar de que estou prestando atenção. Não com este livro. Por mais estranho que pareça, ele faz com que seja divertido aprender. Enquanto outros livros estão dizendo ‘Bueller...Bueller...Bueller’, este livro está no carro alegórico dizendo ‘Shake it up, baby!’” — Eric Wuehler “Eu literalmente amo este livro. De fato, eu o beijei na frente da minha mulher.” — Satish Kumar

Outros livros da série Use a Cabeça! Use a Cabeça! Ajax Profissional Use a Cabeça! Álgebra Use a Cabeça! Análise e Projeto Orientado ao Objeto Use a Cabeça! Análise de Dados Use a Cabeça! C# – 2ª Edição Use a Cabeça! Desenvolvimento de Software Use a Cabeça! Desenvolvendo para iPhone & iPad Use a Cabeça! Estatística Use a Cabeça! Excel Use a Cabeça! Física Use a Cabeça! Geometria 2D Use a Cabeça! Java – 2ª Edição Use a Cabeça! JavaScript Use a Cabeça! jQuery Use a Cabeça! Mobile Web Use a Cabeça! Padrões de Projetos – 2ª Edição Use a Cabeça! Programação Use a Cabeça! PHP & MySQL Use a Cabeça! PMP Use a Cabeça! Python Use a Cabeça! Rails – 2ª Edição Use a Cabeça! Redes de Computadores Use a Cabeça! Servlets & JSP – 2ª Edição Use a Cabeça! SQL Use a Cabeça! Web Design

Use a Cabeça! C Não seria maravilhoso se existisse um livro sobre C que fosse mais fácil de entender do que o manual de operação de um ônibus espacial? Acho que é apenas um sonho...

David Griffiths Dawn Griffiths

Rio de Janeiro, 2013

Para Dennis Ritchie (1941-2011), o pai do C.

os autores

Autores de Use a Cabeça! C

s

David Griffith

Dawn Griffiths

David Griffiths começou a programar aos 12 anos de idade, quando viu um documentário sobre o trabalho de Seymour Papert. Aos 15, ele escreveu uma implementação da linguagem computacional de Papert, o LOGO. Depois de estudar matemática na universidade, começou a escrever código para computadores e artigos de revista para humanos. Ele trabalhou como coach de metodologias ágeis, programador e atendente de garagem, mas não nesta ordem. David Griffiths pode escrever código em mais de dez linguagens, e prosa em apenas uma, e, quando não está escrevendo, programando, ou trabalhando como coach, ele passa a maior parte do seu tempo livre com sua adorável esposa – e coautora, – Dawn. Antes de escrever Use a Cabeça! C, David escreveu dois outros livros Use a Cabeça!: Use a Cabeça! Rails e Use a Cabeça! Programação.

viii

Você pode seguir o David no Twitter: http://twitter.com/dogriffiths.

Dawn Griffiths começou a vida matemática em uma universidade top do Reino Unido, onde foi premiada como primeira da classe de licenciatura. Ela passou a seguir uma carreira em desenvolvimento de software e tem mais de quinze anos de experiência na indústria de Tecnologia da Informação. Antes de juntar forças com David em Use a Cabeça! C, Dawn escreveu outros dois livros Use a Cabeça! (Use a Cabeça! Estatística e Use a Cabeça! Geometria 2D) e também trabalhou em muitos outros livros da série. Quando Dawn não está trabalhando, você a verá aprimorando suas habilidades de Tai Chi, correndo, confeccionando renda de bilro, ou cozinhando. Ela também curte viajar e passar o tempo com seu marido, David.

conteúdo

Conteúdo Resumido Introdução

xxvii

1

Começando com c: Mergulhando de cabeça

1

2

Memória e ponteiros: Para o que está apontando?

41

2.5

Strings: Teoria de strings

3

Criando ferramentas pequenas: Faça uma coisa e faça-a bem

103

83

4

Usando múltiplos arquivos fonte: Desmonte e reconstrua

157

C Lab 1: Arduino

207

5

Structs, unions e bitfields: Criando suas próprias estruturas

217

6

Estruturas de dados e memória dinâmica: Construindo pontes

267

7

Funções avançadas: Aumente suas funções para onze

311

8

Bibliotecas estáticas e dinâmicas: Código Hot-Swappable

351

C Lab2: OpenCV

389

9

Processos e chamadas de sistema: Quebrando limites

397

10

Comunicação entre processos: É bom conversar.

429

11

Sockets e redes: Não há lugar como 127.0.0.1

467

12

Threads: É um mundo paralelo

501

C Lab 3: Blasteroids

523

i

Sobras: As dez melhores coisas (que não cobrimos)

539

ii

Tópicos C: Revisão geral

553

Conteúdo Introdução Seu cérebro sobre C. Aqui você está tentando aprender algo; enquanto isso, aqui está o seu cérebro lhe fazendo o favor de se certificar de que o aprendizado não role. Seu cérebro está pensando: “É melhor deixar espaço para coisas mais importantes, como quais animais selvagens evitar e se praticar snowboarding pelado é uma má ideia”. Então, como você engana seu cérebro para que ele pense que sua vida depende de conhecer C? A quem se destina este livro?

xxviii

Sabemos o que você está pensando

xxix

Metacognição:

xxxi

Leve sua mente à submissão

xxxiii

Leia-me

xxxiv

Revisão técnica

xxxvi

Agradecimentos

xxxvii você está aqui !

ix

conteúdo

1

começando com c Mergulhando de cabeça Quer entrar de cabeça no computador? Precisa escrever um código de alta performance para um novo jogo? Programar um Arduino? Ou usar aquela biblioteca de terceiros avançada no seu app de iPhone? Se for o caso, então C está aqui para ajudar. C funciona em um nível muito mais baixo que outras linguagens; então, entender C te dá uma ideia muito melhor do que realmente está acontecendo. C até pode te ajudar a entender melhor outras linguagens. Então, mergulhe de cabeça, pegue seu compilador, e você começará em pouco tempo. C é uma linguagem para programas pequenos e rápidos

2

Mas o que um programa C completo parece?

5

Mas como você executa o programa?

x

9

Dois tipos de comandos

14

Aqui está o código até agora

15

Contar cartas? Em C?

17

Há mais em booleanos que igual...

18

Como está o código agora?

25

Usando o velho switch

26

Às vezes, uma vez não é o bastante...

29

Loops frequentemente usam a mesma estrutura...

30

Use break para fugir...

31

Sua Caixa de Ferramentas C

40

conteúdo

2

memória e ponteiros Para o que está apontando? Se você realmente quer arrasar com C, você precisa entender como C gerencia memória. A linguagem C lhe dá muito mais controle sobre como seu programa usa a memória do computador. Neste capítulo, você irá abaixo da superfície e verá exatamente o que acontece quando lê e cria variáveis. Você aprenderá como arrays funcionam, como evitar desagradáveis desastres de memória e, mais importante que tudo, verá como dominar ponteiros e endereçamento de memória é chave para se tornar um programador fera em C.

2

GLOBAIS 1

CONSTANTES

Código C inclui ponteiros

42

Escavando na memória

43

Navegue com ponteiros

44

Tente passar um ponteiro para a variável

47

Usando ponteiros de memória

48

Como passar uma string para uma função?

53

Variáveis array são como ponteiros...

54

O que o computador pensa quando executa seu código

55

Mas variáveis array não são exatamente ponteiros.

59

Porque arrays na realidade começam no 0

61

Por que ponteiros têm tipos?

62

Usando ponteiros para entrada de dados

65

Tome cuidado com scanf()

66

fgets() é uma alternativa para scanf()

67

String literais nunca podem ser atualizadas.

72

Se for modificar uma string, faça uma cópia.

74

Memorizador de memória

80

Sua Caixa de Ferramentas C

81

LINK A6, #VARSIZE MOVEM.L DO-D7/A1-A5, (SP) MOVE.L SP, SAVESTK(A6) MOVE.L SP, SAVEAS(A6) MOVE.L GRAFGLOBALS(A5), AO

xi

conteúdo

strings Teoria de strings Existe mais em strings do que apenas a leitura. Você viu como strings em C são, na realidade, arrays de char, mas o que C te deixa fazer com elas? Isto é, quando string.h entra em jogo. string.h é uma parte da Biblioteca Padrão do C que é dedicada à manipulação de strings. Se quiser concatenar strings, copiar uma string para outra ou comparar duas strings, as funções em string.h estão à sua disposição. Neste capítulo, verá como criar um array de strings e, depois, verá exatamente como realizar buscas em strings usando a função strstr(). Procura-se Frank desesperadamente Crie um array de arrays

85

Encontre strings contendo o texto de busca

86

Usando a função strstr()

89

Tá na hora de revisar o código

94

Array de arrays vs. array de ponteiros Sua Caixa de Ferramentas C

xii

84

98 101

conteúdo

3

criando ferramentas pequenas Faça uma coisa, e faça-a bem Todo sistema operacional inclui ferramentas pequenas. Ferramentas pequenas escritas em C realizam pequenas tarefas especializadas, tais como ler e escrever arquivos ou filtrar dados. Se quiser realizar tarefas mais complexas, pode até ligar diversas ferramentas juntas. Mas como estas ferramentas pequenas são criadas? Neste capítulo, você verá a matéria-prima para a fabricação das ferramentas pequenas. Você descobrirá como controlar as opções da linha de comando e como gerenciar tráfego de informação e redirecionamento, criando ferramentas em pouco tempo. Ferramentas pequenas podem solucionar grandes problemas

104

Aqui está como o programa deveria funcionar

108

Mas você não está usando arquivos...

109

Pode usar redirecionamento

110

Apresentando o Erro Padrão

120

Por default, o Erro Padrão é enviado ao display

121

fprintf() imprime para um fluxo de dados

122

Vamos atualizar o código para usar fprintf()

123

Ferramentas pequenas são flexíveis

128

Não mude a ferramenta geo2json

129

Uma tarefa diferente precisa de uma ferramenta diferente.

130

Ligue sua entrada e saída com um pipe

131

A ferramenta bermuda

132

Mas e se quiser enviar output para mais de um arquivo?

137

Crie seus próprios fluxos de dados

138

Existe mais na main()

141

Deixe a biblioteca fazer o seu trabalho

149

Sua Caixa de Ferramentas C

156

xiii

conteúdo

4

usando múltiplos arquivos fonte Desmonte e reconstrua Se for criar um grande programa, você não quer grandes arquivos fonte. Você consegue imaginar como seria difícil e demorado fazer a manutenção de um único arquivo fonte para um programa a nível empresarial? Neste capítulo, você aprenderá como C permite quebrar seu código-fonte em segmentos pequenos e gerenciáveis e, depois, reconstruí-los em um grande programa. Durante o caminho, aprenderá um pouco mais sobre sutilezas de tipos de dados e conhecerá seu novo melhor amigo: make. Seu guia rápido para tipos de dados

xiv

162

Não coloque algo grande em algo pequeno

163

Use casting para colocar floats em números inteiros

164

Essa não... os atores sem emprego...

168

Vamos ver o que aconteceu com o código

169

Compiladores não gostam de surpresas

171

Separe a declaração da definição

173

Criando seu primeiro arquivo header

174

Se tiver características em comum...

182

Pode dividir o código em arquivos separados

183

Compilação por trás das cenas

184

O código compartilhado precisa de seu próprio arquivo header

186

Não é física quântica… ou será que é?

189

Não recompile cada arquivo

190

Primeiro compile a fonte em arquivos objetos

191

É difícil manter o controle sob os arquivos

196

Automatize seus builds com a ferramenta make

198

Como make funciona

199

Mostre seu código para make com makefile.

200

Sua Caixa de Ferramentas C

206

conteúdo

C Lab 1 Arduino Você sempre quis que suas plantas pudessem te dizer quando precisam ser regadas? Bem, com Arduino elas podem! Neste lab, você criará um monitor de planta alimentado por Arduino todo programado em C.

xv

conteúdo

5

structs, unions e bitfields Criando suas próprias estruturas A maioria das coisas na vida é mais complexa que um simples número. Até agora, temos visto os tipos básicos de dados da linguagem C, mas e se você quiser ir além dos números e segmentos de texto e modelar as coisas no mundo real? structs permitem que você modele complexidades do mundo real através da criação de suas próprias estruturas. Neste capítulo, você aprenderá como combinar os tipos básicos de dados em structs e até manejar as incertezas da vida com unions. E, se quiser um simples sim ou não, bitfields podem ser exatamente o que você precisa.

xvi

Às vezes, você precisa distribuir muitos dados.

218

Conversa de cubículo

219

Crie seu próprio tipo estruturado de dados com um struct

220

Só dê-lhes o peixe

221

Leia os campos do struct com o operador “.”

222

É possível colocar um struct dentro do outro?

227

Como você atualiza um struct?

236

O código está clonando a tartaruga

238

Você precisa de um ponteiro para o struct

239

(*t).age vs. *t.age

240

Às vezes, o mesmo tipo de coisa precisa de tipos diferentes de dados.

246

Um union deixa você reutilizar espaço de memória.

247

Como se usa o union?

248

Uma variável enum armazena um símbolo

255

Às vezes, você quer controlar o nível de bits.

261

Bitfields armazenam uma quantidade customizável de bits

262

Sua Caixa de Ferramentas C

266

conteúdo

6

estruturas de dados e memória dinâmica Construindo pontes Às vezes, um único struct simplesmente não é o suficiente. Para modelar requisitos complexos de dados, você frequentemente precisa juntar structs. Neste capítulo, você verá como usar ponteiros struct para ligar tipos customizados de dados em estruturas de dados grandes e complexas. Você explorará princípioschave, criando listas encadeadas. Você também verá como fazer com que suas estruturas de dados aceitem quantidades flexíveis de dados, alocando memória dinamicamente no heap e liberando a memória quando tiver terminado. E, se a boa economia doméstica ficar complicada, também aprenderá como valgrind pode ajudar. Você precisa de armazenamento flexível?

268

Listas encadeadas são como correntes de dados.

269

Listas encadeadas permitem inserções.

270

Crie uma estrutura recursiva

271

Crie ilhas em C...

272

Inserindo valores na lista

273

Use o heap para armazenamento dinâmico

278

Devolva a memória quando terminar

279

Peça memória com malloc()...

280

Vamos consertar o código usando a função strdup()

286

Libere a memória ao terminar

290

Uma visão geral do sistema SIPS

300

Software Forense: usando valgrind

302

Use valgrind repetidamente para coletar mais evidência.

303

Olhe a evidência

304

A solução em julgamento

307

Sua Caixa de Ferramentas C

309

xvii

conteúdo

7

funções avançadas Aumente suas funções para onze Funções básicas são ótimas, mas às vezes você precisa de mais. Até agora, você tem se concentrado no básico. Mas e se precisar de ainda mais poder e flexibilidade para conseguir o que quer? Neste capítulo, você verá como aumentar o QI do seu código passando funções como parâmetros. Você descobrirá como organizar as coisas com funções de comparação. E, finalmente, descobrirá como fazer seu código muito flexível com funções com argumentos variáveis.

xviii

Procurando o Sr. Certo...

312

Passando código a uma função

316

Você precisa dizer para find() o nome de uma função.

317

Todo nome de função é um ponteiro para a função...

318

...mas não existe tipo de dados function

319

Como criar ponteiros para funções

320

Organize-se com a Biblioteca Padrão C

325

Use os ponteiros para funções para pôr as coisas em ordem.

326

Automatizando as cartas da agência de namoro

334

Crie um array de ponteiros para funções

338

Faça sua função flexível

343

Sua Caixa de Ferramentas C

350

conteúdo

8

bibliotecas estáticas e dinâmicas Código Hot-Swappable Você já viu o poder de bibliotecas padrão. Agora chegou a hora de usar este poder para o seu código. Neste capítulo, verá como criar suas próprias bibliotecas e reutilizar o mesmo código em vários programas. E mais, aprenderá como compartilhar código durante o tempo de execução com bibliotecas dinâmicas e os segredos dos programadores gurus. E, ao terminar o capítulo, você será capaz de escrever código escalável que poderá ser dimensionado e gerenciado de forma simples e eficiente. Código que você pode levar ao banco

352

Maior e menor são para headers padrão

354

Mas e se quiser compartilhar código?

355

Compartilhando arquivos header .h

356

Compartilhe arquivos de objetos .o usando o pathname completo

357

Um depósito contém arquivos .o.

358

Crie um arquivo com o comando ar...

359

Finalmente, compile seus outros programas.

360

A Academia Use a Cabeça! está virando global.

365

Calculando calorias

366

Mas as coisas são um pouco mais complexas...

369

Programas são compostos de vários pedaços...

370

Ligações dinâmicas acontecem durante o tempo de execução

372

Dá para fazer uma ligação .a durante o tempo de execução?

373

Primeiro crie um arquivo objeto

374

O nome que der para sua biblioteca dinâmica depende da sua plataforma.

375

Sua Caixa de Ferramentas C

387

xix

conteúdo

C Lab2 OpenCV Imagine se seu computador pudesse ficar de olho na sua casa, enquanto você está fora, e te dizer quem tem perambulado por aí. Neste lab, você criará um detector de intrusos à base de C usando a astúcia do OpenCV.

xx

conteúdo

9

processos e chamadas de sistema Quebrando limites Está na hora de pensar fora da caixa Você já sabe que pode criar aplicativos complexos conectando ferramentas pequenas na linha de comando. Mas, e se quiser usar outros programas do seu próprio código? Neste capítulo, você aprenderá como usar serviços do sistema para criar e controlar processos. Com isso, seus programas terão acesso a e-mail, web e quaisquer outras ferramentas que tenha instalado. Ao terminar este capítulo, você terá a capacidade de ir além do C. Chamadas ao sistema são sua conexão ao SO

398

Aí alguém invadiu o sistema...

402

Segurança não é o único problema

403

As funções exec() lhe dão mais controle

404

Há várias funções exec()

405

As funções array: execv(), execpv(), execve()

406

Passando variáveis de ambiente

407

A maioria das chamadas de sistema cometem o mesmo erro

408

Leia as notícias com RSS

416

exec() é o fim da linha para o seu programa

420

Executando um processo filho com fork() + exec()

421

Sua Caixa de Ferramentas C

427

xxi

conteúdo

10

comunicação entre processos É bom conversar Criar processos é apenas metade da história E se você quiser controlar o processo quando este estiver em execução? E se quiser enviar dados para ele? Comunicação entre processos os deixa realizar o trabalho em conjunto. Vamos te mostrar como multiplicar o poder do seu código deixando ele conversar com outros programas no seu sistema. Redirecionando a entrada e a saída

430

Olhando por dentro de um processo típico

431

Redirecionamento simplesmente substitui o fluxo de dados 432

xxii

fileno() te diz qual é o descritor

433

Às vezes, você precisa esperar...

438

Fique em contato com seu filho

442

Conecte seus processos com pipes

443

Estudo de caso: abrindo histórias em um navegador

444

No filho

445

No pai

445

Abrindo uma página web em um navegador

446

A morte de um processo

451

Pegando os sinais e executando o seu código

452

sigactions são registradas com sigaction()

453

Reescrevendo o código para usar um tratador de sinais

454

Use kill para enviar sinais

457

Enviando uma chamada de alerta para seu código

458

Sua Caixa de Ferramentas C

466

conteúdo

11

sockets e redes Não há lugar como 127.0.0.1 Programas em máquinas diferentes precisam conversar. Você aprendeu como usar I/O para se comunicar com arquivos e como processos na mesma máquina podem se comunicar entre si. Agora você vai precisar entrar em contato com o resto do mundo e aprender como escrever programas em C que podem conversar com outros programas do outro lado da rede e do outro lado do mundo. Ao terminar este capítulo, você será capaz de criar programas que atuam como servers e programas que atuam como clientes. O servidor de internet knock-knock

468

Visão geral do servidor knock-knock

469

BLAB: como servidores conversam com a internet

470

Um socket não é um típico fluxo de dados

472

Às vezes o servidor não inicializa corretamente.

476

O motivo pelo qual sua mãe sempre mandou verificar seu trabalho

477

Lendo dados do cliente

478

O servidor só pode falar com uma pessoa por vez.

485

Você pode fork() um processo para cada cliente

486

Escrevendo um cliente web

490

Clientes que mandam

491

Crie um socket para um endereço IP

492

getaddrinfo() pega endereços para domínios

493

Sua Caixa de Ferramentas C

500

xxiii

conteúdo

12

threads É um mundo paralelo Frequentemente programas precisam fazer diversas coisas ao mesmo tempo. Threads POSIX podem fazer seu código mais interativo, separando alguns segmentos de código para serem executados em paralelo. Mas tenha cuidado! Threads são ferramentas poderosas, mas você não quer que elas entrem em colisão. Neste capítulo, você aprenderá como colocar sinais de trânsito e marcadores de pista que irão prevenir um acidente de código. No final, você saberá como criar threads POSIX e como usar mecanismos de sincronização para proteger a autenticidade de dados sensitivos. Tarefas são sequenciais... ou não...

502

...e processos não são sempre a solução

503

Processos simples fazem uma coisa de cada vez

504

Contrate funcionários extras: use threads

505

Como se criam threads?

506

Crie threads com pthread_create.

507

O código não é seguro para threads

512

Você precisa acrescentar sinais de trânsito

513

Use mutex como sinal de trânsito

514

Sua Caixa de Ferramentas C

521

A Variável compartilhada

B xxiv

conteúdo

C Lab 3 Blasteroids Neste lab, você fará um tributo a um dos videogames mais populares e de longa vida entre todos. Está na hora de criar Blasteroids!

xxv

conteúdo

i

sobras As dez melhores coisas (que não cobrimos) Mesmo depois de tudo aquilo, ainda tem mais um pouquinho. Tem mais algumas coisas que achamos que você precisa saber. Não nos sentiríamos bem ignorando-as, mesmo que precisem de uma breve menção, e nós realmente queremos lhe dar um livro que você possa carregar sem treinamento intensivo na academia do bairro. Então, antes de guardar este livro, leia estes acréscimos. 1. Operadores

ii

540

2. Diretivas do pré-processador

542

3. A palavra-chave static

543

4. Qual o tamanho das coisas

544

5. Testes automatizados

545

6. Mais sobre gcc

546

7. Mais sobre make

548

8. Ferramentas de desenvolvimento

550

9. Criando GUIs

551

10. Material de referência

552

Tópicos C Revisão geral Você já quis que todos aqueles ótimos fatos sobre C estivessem em um só lugar? Essa é uma reunião de todos os tópicos e princípios de C que apresentamos no livro. Dê uma olhada e veja se consegue se lembrar de todos. Cada fato tem o capítulo de origem ao lado, então fica fácil procurar a referência se precisar de um lembrete. Talvez você até queira destacar estas páginas para colocar na sua parede.

xxvi

View more...

Comments

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF