2008-10-17 24 views
25

¿Puede recomendar bibliotecas revisadas por pares que pueda usar en entorno C (algo así como Boost for C++)? Algo que proporciona hash, hilo, comunicaciones entre procesos, listas, administración inteligente de memoria ...Boost como bibliotecas en C

El entorno es un sistema integrado, no es un sistema muy minimalista, ¡pero tampoco es una PC!

+0

Olvidé agregar antes que el entorno está integrado en el sistema (no me refiero a un sistema muy pequeño, pero tampoco a una PC). ¿La recomendación Glib también funcionaría allí? –

+0

Me preguntaba sobre eso también, ya que tengo una micro plataforma ARM con la que estoy trabajando. – jim

+1

Probablemente debería siempre y cuando compile la biblioteca desde la fuente. –

Respuesta

6

No estoy seguro de si encontrará una sola biblioteca que cubra todo eso ... pero puede consultar glib y pthreads para cubrir una buena parte de eso.

+0

Agradable. Agregando a mi lista de cosas para mirar. – jim

13

+1 para GLib de mí, también. Además, también tiene su propio threading API, por lo que no tiene que aprender pthreads si no lo desea.

No estoy seguro de si existe algo como "administración inteligente de memoria" en C, no es muy fácil cuando no tienes las redes de seguridad de los destructores y el control de los operadores. Pero, una vez más, GLib tiene muchas estructuras de datos orientadas a la memoria y cosas que realmente hacen la vida más fácil.

Y no, no estoy en el equipo de GLib, pero realmente me gusta. :)

+0

¿No hay alguna biblioteca para tener funciones Regex como Boost? –

+0

@Ehsan No sé, nunca he usado Boost. Además, este estilo de pregunta está un poco mal visto en estos días. – unwind

+0

¿Conoces alguna biblioteca regex para C? Algo mejor que 'regex.h'? –

2

Voy a saltar en el carro GLib también. Recuerde que C no proporciona ningún azúcar sintáctico para estructuras de datos complejas, por lo que hay muchos moldes y nombres de funciones largos en GLib, pero realmente hace un trabajo excelente y eficiente con un poco de verbosidad añadida.

5

Mire Boehm GC un colector de basura conservador ampliamente utilizado para C (o C++) que podría servir a sus necesidades en cuanto a la administración de memoria inteligente.

+0

Uno debe tener cuidado al mezclar GC con código que no sea de GC, p. almacenar referencias a un bloque GC (una creada con, por ejemplo, GC_MALLOC) solo en bloques no GC (por ejemplo, los creados con malloc) probablemente recordará prematuramente ese bloque. (Al menos de acuerdo con la semántica del GC, no lo intenté yo mismo, por favor corrígeme si estoy equivocado.) Preguntándome si hay alguna buena biblioteca de utilidad con GC-aware. – Paggas

2

Acerca del uso de Glib.

Probablemente pueda tomar lo que necesita y realizar una compilación cruzada. Entonces, si solo necesitas el paquete de subprocesos, simplemente compila y no tomes todo.

Estoy haciendo lo mismo con la máquina virtual de Python. PyMite se adapta a un microcontrolador y no utiliza toda la funcionalidad.

6

Echa un vistazo al proyecto Apache Portable Runtime (APR).

Algunas de sus características:

  • API de gestión de memoria
  • hilos, mutex
  • archivo de E/S
  • operaciones atómicas
  • tablas hash, matrices
  • sockets de red y el protocolo
  • memoria compartida, mmap

Sin mencionar que es portátil.

Cuestiones relacionadas